1 回答
TA贡献1799条经验 获得超8个赞
考虑到您的模型摘要,模型需要输入 shape(batch_size, 16)和目标 shape (batch_size, 4)。
如果你的目标的形状是(1627,1)你的问题。
解决方案:将其更改为一个热变量(例如使用tf.one_hot(y, n_classes)),错误应该消失
import numpy as np
import tensorflow as tf
input_dim = 16
hidden_dim = 30
n_classes = 4
model = tf.keras.Sequential()
model.add(tf.keras.layers.Dense(hidden_dim, input_dim=input_dim, activation='relu'))
model.add(tf.keras.layers.Dense(n_classes, input_dim=hidden_dim, activation='relu'))
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
X = np.random.randn(100, input_dim)
y = np.random.randint(0, n_classes, size=(100,))
model.fit(X, y)
# ValueError: Shapes (None, 1) and (None, 4) are incompatible
y = tf.one_hot(y, n_classes)
model.fit(X, y)
# Works !
添加回答
举报