gpt4 book ai didi

python - "... has insufficient rank for batching."这3行代码有什么问题?

转载 作者:行者123 更新时间:2023-12-04 09:45:38 27 4
gpt4 key购买 nike

这是我在这里的第一个问题。
我一直想用流行的 IMDb 数据集创建一个数据集用于学习目的。目录如下: .../train/pos/和 .../train/neg/。我创建了一个函数,它将文本文件与其标签合并并出现错误。我需要你的帮助来调试!

def datasetcreate(filepath, label):
filepaths = tf.data.Dataset.list_files(filepath)
return tf.stack([tf.data.Dataset.from_tensor_slices((_, tf.constant(label, dtype='int32'))) for _ in tf.data.TextLineDataset(filepaths)])
datasetcreate(['aclImdb/train/pos/*.txt'],1)

这是我得到的错误:
ValueError: Value tf.Tensor(b'An American in Paris was, in many ways, the ultimate.....dancers of all time.', shape=(), dtype=string) has insufficient rank for batching.

为什么会发生这种情况,我该怎么做才能摆脱这种情况?谢谢。

最佳答案

您的代码有两个问题:

第一 ,加载 TextLineDatasets 的方式,加载的张量包含字符串对象,这些对象具有关联的空形状,即等级为零。 rank张量的长度是形状属性的长度。

其次 ,您正在尝试 stack两个具有不同等级的张量,这会引发另一个错误,因为一个句子(一个标记序列)的等级为 1,而标量标签的等级为 0。

如果您只需要数据集,我建议使用 Tensorflow Dataset包,其中有许多现成的数据集可用。

如果想解决您的特定问题,修复数据管道的一种方法是使用 Datasest.interleaveDataset.zip职能。

# load positive sentences
filepaths = list(tf.data.Dataset.list_files('aclImdb/train/pos/*.txt'))
sentences_ds = tf.data.Dataset.from_tensor_slices(filepaths)
sentences_ds = sentences_ds.interleave(lambda text_file: tf.data.TextLineDataset(text_file) )
sentences_ds = sentences_ds.map( lambda text: tf.strings.split(text) )

# dataset for labels, create 1 label per file
labels = tf.constant(1, dtype="int32", shape=(len(filepaths)))
label_ds = tf.data.Dataset.from_tensor_slices(labels)

# combine text with label datasets
dataset = tf.data.Dataset.zip( (sentences_ds, label_ds) )

print( list(dataset.as_numpy_iterator() ))

首先,您使用 interleave 函数将多个文本数据集合并为一个数据集。接下来,您使用 tf.strings.split将每个文本拆分为其标记。然后,您为正面标签创建一个数据集。最后,您使用 zip 组合两个数据集。

重要提示:要在您的数据集上训练/运行任何 DL 模型,您可能需要对句子进行进一步的预处理,例如建立词汇并训练 word-embeddings .

关于python - "... has insufficient rank for batching."这3行代码有什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62131590/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com