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))

本人报错如下

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

我采用的解决方法为重新选择损失函数 SparseCategoricalCrossentropy
ValueError: Shapes (None, 1) and (None, 43) are incompatible_第2张图片
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]…

你可能感兴趣的:(Python3,各种安装错误,python,人工智能,深度学习)