TensorFlow 模型训练:InvalidArgumentError:不兼容的形状:[8,10] 与 [32,1]

时间:2021-05-15 06:33:06

标签: python tensorflow machine-learning computer-vision

我正在实施 LeNet-5 模型。我在随机时期和时期内的随机步骤中收到以下错误。有时它可以正常工作,没有任何问题。

我尝试用 imageDataGenerator 替换输入 x_train 和 y_train

Here is the link 到我遇到问题的代码。

Epoch 1/200
 1/10 [==>...........................] - ETA: 3s - loss: 0.1823 - accuracy: 0.9375
---------------------------------------------------------------------------
InvalidArgumentError                      Traceback (most recent call last)
<ipython-input-20-a90687551bd7> in <module>()
      8           , epochs=number_of_epochs
      9           , steps_per_epoch = 10
---> 10           , validation_data = datagen.flow(x_train, y_train, batch_size=batch_size, subset='validation')
     11           )

6 frames
/usr/local/lib/python3.7/dist-packages/tensorflow/python/eager/execute.py in quick_execute(op_name, num_outputs, inputs, attrs, ctx, name)
     58     ctx.ensure_initialized()
     59     tensors = pywrap_tfe.TFE_Py_Execute(ctx._handle, device_name, op_name,
---> 60                                         inputs, attrs, num_outputs)
     61   except core._NotOkStatusException as e:
     62     if name is not None:

InvalidArgumentError:  Incompatible shapes: [8,10] vs. [32,1]
     [[node gradient_tape/categorical_crossentropy/softmax_cross_entropy_with_logits/mul (defined at <ipython-input-20-a90687551bd7>:10) ]] [Op:__inference_train_function_129979]

Function call stack:
train_function

2 个答案:

答案 0 :(得分:0)

经过反复试验,结果如下:该模型最初使用的是平均池化,但用最大池化代替它消除了这个错误。

我仍然想知道行为背后的原因。任何进一步的见解将不胜感激

答案 1 :(得分:0)

据我所知,问题来自于损失的计算,您的标签数组的形状为 (8,10),而模型输出数组的形状为 (32,1)。您是否有可能同时更正模型输出维度,因为我不明白为什么将平均池化更改为最大池化会改变这一点。此外,在您的 Colab 笔记本中,平均池化单元似乎运行正常。