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 !
添加回答
舉報