Python 在Keras中实现的神经网络在训练期间的怪异行为

Python 在Keras中实现的神经网络在训练期间的怪异行为,python,keras,neural-network,Python,Keras,Neural Network,我用Keras实现了一个复杂的神经网络。神经网络训练正常,训练时精度达到100%。然而,在评估过程中,结果非常低,神经网络的输出总是0 首先,我调查了神经网络的权重,发现了一些nan值。我替换了这些值并重新训练了神经网络。训练结束后,权重中不再存在nan值。然而,评价结果仍然是一样的 出于绝望,我运行了以下命令来训练网络: model.fit(dt[:200],labels[:200],epochs=100,batch_size=10,validation_data=(dt[:200],labe

我用Keras实现了一个复杂的神经网络。神经网络训练正常,训练时精度达到100%。然而,在评估过程中,结果非常低,神经网络的输出总是0

首先,我调查了神经网络的权重,发现了一些nan值。我替换了这些值并重新训练了神经网络。训练结束后,权重中不再存在nan值。然而,评价结果仍然是一样的

出于绝望,我运行了以下命令来训练网络:

model.fit(dt[:200],labels[:200],epochs=100,batch_size=10,validation_data=(dt[:200],labels[:200]))
尽管代码中有很多废话,但我至少希望得到训练集和测试集的相同值。但我得到的是:

Train on 200 samples, validate on 200 samples
Epoch 1/100
200/200 [==============================] - 21s 104ms/step - loss: 0.2230 - acc: 0.9650 - val_loss: 7.9712 - val_acc: 0.5000
Epoch 2/100
200/200 [==============================] - 21s 104ms/step - loss: 0.0302 - acc: 0.9850 - val_loss: 0.7086 - val_acc: 0.5000
Epoch 3/100
200/200 [==============================] - 21s 104ms/step - loss: 0.0353 - acc: 0.9800 - val_loss: 0.7096 - val_acc: 0.5000
Epoch 4/100
200/200 [==============================] - 21s 104ms/step - loss: 0.0349 - acc: 0.9900 - val_loss: 0.7088 - val_acc: 0.5000
Epoch 5/100
200/200 [==============================] - 21s 104ms/step - loss: 0.0298 - acc: 0.9900 - val_loss: 0.7097 - val_acc: 0.5000
Epoch 6/100
200/200 [==============================] - 21s 103ms/step - loss: 0.0457 - acc: 0.9800 - val_loss: 0.7065 - val_acc: 0.5000
Epoch 7/100
200/200 [==============================] - 21s 103ms/step - loss: 0.0060 - acc: 0.9950 - val_loss: 0.7080 - val_acc: 0.5000
Epoch 8/100
200/200 [==============================] - 20s 102ms/step - loss: 0.0337 - acc: 0.9900 - val_loss: 0.7045 - val_acc: 0.5000
Epoch 9/100
200/200 [==============================] - 21s 105ms/step - loss: 0.0048 - acc: 1.0000 - val_loss: 0.7049 - val_acc: 0.5000
Epoch 10/100
200/200 [==============================] - 21s 104ms/step - loss: 0.0020 - acc: 1.0000 - val_loss: 0.7059 - val_acc: 0.5000

训练和评估使用完全相同的集合,但返回不同的损失和准确度值。有什么想法吗

如果您在完成培训后在同一组上运行
model.evaluation
,会发生什么情况?您为什么使用与培训和评估相同的组?这是什么类型的数据?@theguy with the hat the model.evaluate在val_loss和val_acc中返回相同的值。@DarK_FirefoX我正在使用相同的集进行故障排除。由于使用了相同的数据集,因此预计会有相同的损失和精度@DarK_FirefoX他这样做只是为了证明即使在完全相同的数据集上,训练和验证也能获得不同的准确度。