深度学习:验证损失波动很大,但培训损失却稳定

时间:2018-08-05 14:20:43

标签: python tensorflow machine-learning keras deep-learning

我正在处理文本序列,序列长度在1-3之间。标签是“分数”。我有超过500万个样本。我的网络看起来像这样(Keras):

model.add(Embedding(word_count, 128, input_length=3))
model.add(BatchNormalization())

model.add(Dense(128, activation='relu'))
model.add(BatchNormalization())
model.add(Dense(256, activation='relu'))
model.add(BatchNormalization())
model.add(Dense(512, activation='relu'))
model.add(BatchNormalization())
model.add(Dense(1024, activation='relu'))

model.add(Flatten())
model.add(Dense(1, activation='linear'))

我尝试了许多不同的网络形状和配置,包括使用/不使用Dropout&BatchNorm。但是我的损失总是像这样:

enter image description here

我正在使用批量大小为1024和Adam优化器的

据我所知,培训和测试数据集在预处理等方面绝对没有区别。

关于如何诊断这一点的任何建议?

2 个答案:

答案 0 :(得分:0)

首先。您应该拆分数据集。

model.fit(X, Y, validation_split=0.1, epochs=100, batch_size=10)

然后您可以查看值是否更改。

答案 1 :(得分:0)

我发现了问题。当我只想改组训练数据时,我在各个时期之间改组了测试数据。谢谢您的评论。