为什么我的Keras形状不匹配?

2024-10-03 15:34:29 发布

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

我以Keras-mnist为例,供初学者参考。我试图改变标签,以适应我自己的数据有3个不同的文本分类。我用“绝对”来达到这个目的。形状在我看来是对的,但是“适合”得到一个错误:

train_labels = keras.utils.to_categorical(train_labels, num_classes=3)

print(train_images.shape)
print(train_labels.shape)

model = keras.Sequential([
    keras.layers.Flatten(input_shape=(28, 28)),
    keras.layers.Dense(128, activation=tf.nn.relu),
    keras.layers.Dense(3, activation=tf.nn.softmax)
])

model.compile(optimizer='adam',
              loss='sparse_categorical_crossentropy',
              metrics=['accuracy'])

model.fit(train_images, train_labels, epochs=5)

(7074, 28, 28)

(7074, 3)

Blockquote Blockquote Traceback (most recent call last): File "C:/Users/lawrence/PycharmProjects/tester2019/KeraTest.py", line 131, in model.fit(train_images, train_labels, epochs=5) File "C:\Users\lawrence\PycharmProjects\tester2019\venv\lib\site-packages\tensorflow\python\keras\engine\training.py", line 1536, in fit validation_split=validation_split) File "C:\Users\lawrence\PycharmProjects\tester2019\venv\lib\site-packages\tensorflow\python\keras\engine\training.py", line 992, in _standardize_user_data class_weight, batch_size) File "C:\Users\lawrence\PycharmProjects\tester2019\venv\lib\site-packages\tensorflow\python\keras\engine\training.py", line 1154, in _standardize_weights exception_prefix='target') File "C:\Users\lawrence\PycharmProjects\tester2019\venv\lib\site-packages\tensorflow\python\keras\engine\training_utils.py", line 332, in standardize_input_data ' but got array with shape ' + str(data_shape)) ValueError: Error when checking target: expected dense_1 to have shape (1,) but got array with shape (3,)


Tags: inpylabelsmodelvenvliblinetrain
1条回答
网友
1楼 · 发布于 2024-10-03 15:34:29

您需要使用categorical_crossentropy而不是{}作为丢失,因为您的标签是一个热编码的。在

或者,如果没有对标签进行热编码,则可以使用sparse_categorical_crossentropy。在这种情况下,标签的形状应该是(batch_size, 1)。在

相关问题 更多 >