【发布时间】:2021-07-07 04:58:22
【问题描述】:
我正在尝试训练我的 keras 模型,但形状不兼容。 错误说
ValueError: Shapes (None, 3) and (None, 3, 3) are incompatible
我的 train set 的形状是 (2000, 3, 768),lable 的形状是 (2000, 3)。
错在哪里?
模型定义和拟合代码
input_shape = x_train.shape[1:]
model = my_dnn(input_shape, 3)
model.fit(x_train, y_train, epochs=25, verbose=1)
型号代码
def my_dnn(input, num_classes):
model = Sequential()
model.add(tf.keras.Input(input))
model.add(Dense(1024))
model.add(Activation('relu'))
model.add(Dropout(0.5))
model.add(Dense(512))
model.add(Activation('relu'))
model.add(Dense(225))
model.add(Activation('relu'))
model.add(Dense(100))
model.add(Activation('relu'))
model.add(Dense(num_classes))
model.add(Activation('sigmoid'))
model.compile( loss='categorical_crossentropy',
optimizer='adam',
metrics=[tf.keras.metrics.SparseCategoricalAccuracy()])
return model
【问题讨论】:
-
不应该是
softmax而不是sigmoid吗? -
您的问题是多标签还是多类问题?你的 y one-hot 编码了吗?
-
如果您有 OneHot 编码标签(形状 (batch,3)),则不能使用
SparseCategoricalAccuracy(),但需要CategoricalAccuracy()
标签: numpy tensorflow keras reshape tf.keras