TensorFlow模型培训:无效arguminterror:不兼容的形状:[8,10]对[32,1]

2024-10-01 19:29:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在实施LeNet-5模型。我在随机纪元和纪元内的随机步骤中得到以下错误。有时,它只是工作没有任何问题

我试图用imageDataGenerator替换输入x_序列和y_序列

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

Tags: nameininputisipythonbatchtrain序列
2条回答

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

经过一些尝试和错误后,发现如下:该模型最初使用的是平均池,但替换为最大池消除了此错误

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

相关问题 更多 >

    热门问题