ValueError: Shapes (None, 1) and (None, 43) are incompatible

ValueError: Shapes (None, 1) and (None, 43) are incompatible

导读
本文意在提供解决此类方法的一个方法,仅参考,并非完全适用于你们所处困境,希望这篇能帮到你。

代码如下

model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
epochs = 15
# batch_size=64/32 
history = model.fit(X_train, y_train, batch_size=32, epochs=epochs, validation_data=(X_test, y_test))

本人报错如下

在这里插入图片描述
分析得出:问题出在 损失函数的选择,因为我的label编码是数字编码,若采用categorical_crossentropy,则需要在image_dataset_from_directory中设置label_mode=‘categorical’。默认情况下,image_dataset_from_directory方法假定标签编码为整数(label_mode=‘int’)。
通常CategoricalCrossentropy是适用于目标是 one-hot 编码,而SparseCategoricalCrossentropy才是适用于数字编码目标。

我采用的解决方法为重新选择损失函数 SparseCategoricalCrossentropy
在这里插入图片描述
1.sparse_categorical_crossentropy
label数组中的数据全为0-9,表示十种分类。

2.categorical_crossentropy
当labe使用one-hot编码时,使用categorical_crossentropy。例如 伦敦 [1, 0, 0, 0, 0, 0],巴黎[0, 1, 0, 0, 0, 0],纽约[0, 0, 1, 0, 0, 0]…

  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一城山水

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值