当X_train = X_test时,训练损失与验证损失不匹配

时间:2018-04-03 13:30:56

标签: python tensorflow machine-learning neural-network keras

我正在跑步:

D.fit(X_train, y_train, nb_epoch=12,validation_data=(X_train,y_train))

但我得到的输出如下:

Train on 61936 samples, validate on 61936 samples
Epoch 1/12
61936/61936 [==============================] - 10s 166us/step - loss: 0.0021 - val_loss: 1.5650e-04
Epoch 2/12
61936/61936 [==============================] - 10s 165us/step - loss: 0.0014 - val_loss: 6.6482e-04
...
Epoch 10/12
61936/61936 [==============================] - 11s 170us/step - loss: 0.0104 - val_loss: 9.6666e-05

2 个答案:

答案 0 :(得分:4)

已知问题

https://github.com/keras-team/keras/issues/605

  

结果不同的另一个原因是因为模型   正在计算“损失”时正在训练,而模型   在计算“val_loss”时固定。由于模型是   训练,“损失”通常会大于真实   在时代结束时训练集损失。即“损失”是平均值   在这个时代的损失,而“val_loss”是之后的平均损失   时代的结束。由于模型在时代期间发生变化,所以损失惨重   变化。

答案 1 :(得分:3)

这些永远不会匹配。验证损失一次在整个数据集上计算(权重固定),培训损失是批次损失的平均值(每批次后权重变化)。如果您想要训练集上的实际损失,您应该运行model.evaluate(X_train)