【发布时间】:2022-10-19 21:13:52
【问题描述】:
这是我的 y_train:
array(['smallpox', 'chickenpox', 'cowpox', ..., 'monkeypox', 'smallpox',
'smallpox'], dtype='<U10')
包含 6 个不同的类别,我得到的错误是我的形状在最后一层不正确
型号是型号:
"model_19"
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
input_48 (InputLayer) [(None, 64, 64, 3)] 0
conv2d_23 (Conv2D) (None, 64, 64, 3) 84
efficientnetb3 (Functional) (None, None, None, 1536) 10783535
global_average_pooling2d_16 (None, 1536) 0
(GlobalAveragePooling2D)
dense_59 (Dense) (None, 6) 9222
=================================================================
Total params: 10,792,841
Trainable params: 10,705,538
Non-trainable params: 87,303
_________________________________________________________________
错误是:
ValueError: Shapes (None, 1) and (None, 6) are incompatible
【问题讨论】:
-
你是标签字符串吗?它们需要映射到从 0 开始的唯一整数值。然后使用
sparse_categorical_crossentropy作为您的损失或 one-hot 编码您的整数标签并使用categorical_crossentropy -
为什么我不能预测类别上升为一个字符串?
-
好吧,因为您的损失函数适用于数字,并且您希望根据损失更新模型的权重..您可以在推理过程中轻松地将预测映射回字符串..
标签: tensorflow