如何修复没有验证准确性?

How to fix no validation accuracy?

我正在研究神经网络,我最近一直在训练它,它在训练数据上的准确率约为 93%,在验证数据上的准确率约为 0%。我的第一个想法是过度拟合,但模型在训练之间没有保存,我在第一个 Epoch 中得到了这些结果。我在 python 中使用 keras,模型代码如下:

model = Sequential(
    [
        Conv1D(320, 8, input_shape=(560, 560), activation="relu"),
        # Conv1D(320, 8, activation="relu"),
        # Conv1D(320, 8, activation="relu"),
        # Dense(750, activation="relu"),
        # Dropout(0.6),
        Dense(1500, activation="relu"),
        Dropout(0.6),
        Dense(750, activation="relu"),
        Dropout(0.6),
        GlobalMaxPooling1D(keepdims=True),
        Dense(1, activation='softmax')
    ]
)

model.compile(optimizer=Adam(learning_rate=0.00001), loss="binary_crossentropy", metrics=['accuracy'])
earlystopping = callbacks.EarlyStopping(monitor="val_accuracy",
                                        mode="max", patience=2,
                                        restore_best_weights=True)
model1 = model.fit(x=training_x, y=training_y, batch_size=150, epochs=5, shuffle=True, verbose=1, callbacks=[earlystopping], validation_data=(val_x, val_y))

我得到的结果如下所示:

Epoch 1/5 167/167 [==============================] - 1266s 8s/step - loss: 6.4154 - accuracy: 0.9262 - val_loss: 0.0054 - val_accuracy: 0.0000e+00

我已经尝试更改几乎所有的超参数并更改模型的架构,但我一直得到类似的结果。这跟数据有关系吗?我使用的数据是一个 3d NumPy 数组,其中包含来自一堆图像的像素数据。如有任何帮助,我们将不胜感激。

您需要使用 activation='sigmoid'optimizers.RMSprop(lr=1e-4) 进行二元分类。