Python “;无法向批次添加张量:元素数不匹配”;在遍历数据集时
我将代码(直到迭代部分)包含在一个Colab笔记本中。我像这样将数据输入到我的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)
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的批处理大小来避免此错误,或者使用图像大小调整器来修复此错误。看看类似的例子。谢谢再看看这个。