我的模型产生了 1.0 的训练准确度和验证准确度,但预测的标签不正确

时间:2021-03-17 17:47:02

标签: python tensorflow machine-learning keras

我正在使用模型:

dim = (94, 1)
x_input = tf.keras.Input(shape=dim)
x = Conv1D(10, kernel_size=2, padding='same', activation='relu')(x_input)
x = MaxPooling1D(2, padding='same')(x)
x = Conv1D(24, kernel_size=2, padding='same', activation='relu')(x)
x = MaxPooling1D(2, padding='same')(x)
x = Conv1D(64, kernel_size=2, padding='same', activation='relu', kernel_initializer='lecun_uniform', bias_initializer='zeros')(x)
x = Flatten()(x)
x = Dense(16, activation="softmax")(x)
model = tf.keras.models.Model(inputs=[x_input], outputs=[x])
model.compile(optimizer="Adam", loss='binary_crossentropy', metrics=['accuracy'])

此模型在使用我的训练数据时产生 1.0 的准确度和 1.0 的测试准确度。当我使用测试数据和 model.predict 时,我没有收到正确的标签。具体来说,标签在整个持续时间内都是不变的。

当我使用 model.evaluate 模型正确预测标签时,但使用时却没有。 输入是 (94,1) 的 7500 个条目和 (16,1) 的 7500 个输出。模型有问题吗?

1 个答案:

答案 0 :(得分:1)

因为你有 16 个类和最后一层

Dense(16, activation="softmax")

你的损失是不正确的。您应该使用 loss='categorical_crossentropy' 编译模型。 binary_crossentropy 应仅用于具有 sigmoid 激活的单节点最后一层。