我正在实施 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
答案 0 :(得分:0)
经过反复试验,结果如下:该模型最初使用的是平均池化,但用最大池化代替它消除了这个错误。
我仍然想知道行为背后的原因。任何进一步的见解将不胜感激
答案 1 :(得分:0)
据我所知,问题来自于损失的计算,您的标签数组的形状为 (8,10),而模型输出数组的形状为 (32,1)。您是否有可能同时更正模型输出维度,因为我不明白为什么将平均池化更改为最大池化会改变这一点。此外,在您的 Colab 笔记本中,平均池化单元似乎运行正常。