我正在使用模型:
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 个输出。模型有问题吗?
答案 0 :(得分:1)
因为你有 16 个类和最后一层
Dense(16, activation="softmax")
你的损失是不正确的。您应该使用 loss='categorical_crossentropy'
编译模型。 binary_crossentropy
应仅用于具有 sigmoid
激活的单节点最后一层。