Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python “;无法向批次添加张量:元素数不匹配”;在遍历数据集时_Python_Tensorflow_Keras - Fatal编程技术网

Python “;无法向批次添加张量:元素数不匹配”;在遍历数据集时

Python “;无法向批次添加张量:元素数不匹配”;在遍历数据集时,python,tensorflow,keras,Python,Tensorflow,Keras,我将代码(直到迭代部分)包含在一个Colab笔记本中。我像这样将数据输入到我的train\u数据集 batch_size = 30 train_dataset = tf.data.Dataset.from_tensor_slices((x_train, y_train)) train_dataset = ( train_dataset.map(encode_single_sample, num_parallel_calls=tf.data.experimental.AUTOTUNE)

我将代码(直到迭代部分)包含在一个Colab笔记本中。我像这样将数据输入到我的
train\u数据集

batch_size = 30

train_dataset = tf.data.Dataset.from_tensor_slices((x_train, y_train))
train_dataset = (
    train_dataset.map(encode_single_sample, num_parallel_calls=tf.data.experimental.AUTOTUNE)
                 .batch(batch_size) #this one gives the error
                 .prefetch(buffer_size=tf.data.experimental.AUTOTUNE))
我得到一个InvalidArgumentError:无法向批次添加张量:元素数不匹配。当我遍历数据集时,形状是:[tensor]:[78],[batch]:[34]

for batch in train_dataset.take(1): #error while iterating
上面的
.batch(batch\u size)
给出了错误。我注意到每次再次运行代码时,错误消息中的[tensor]和[batch]编号都会发生变化。当我将
batch\u size
更改为1时,代码将运行,但我希望也能够更改它

如果有人能调试这个部件,我将不胜感激


编辑1:我正在学习Keras的OCR教程,他们的代码运行得很好。

这很可能是由于输入数据的大小不同(或者是
x\u train
或者
y\u train
)。能否提供
x\u列车
y\u列车
的形状?为了解决这个问题,我们需要填充张量,使它们都具有相同的长度填充不是强制性的,而是首选的,因为批量优化。特别是,了解为什么填充不是赏金中描述的一个选项会有所帮助。此外,OCR教程也可以很好地工作,因为如果我们相信其中显示的可视化效果,那么所有标签的长度都是相同的。因此,tf.data API可以安全地对它们进行批处理。请使用等于1的批处理大小来避免此错误,或者使用图像大小调整器来修复此错误。看看类似的例子。谢谢再看看这个。