我正在张量流中使用 tf.learn 训练 LSTM。为此,我将数据分为训练(90%)和验证(10%)。据我了解,模型通常比验证数据更适合训练数据,但我得到了相反的结果。验证集的损失更低,准确性更高。
正如我在其他答案中读到的那样,这可能是因为验证期间未应用 dropout。然而,当我从 LSTM 架构中删除 dropout 时,验证损失仍然低于训练损失(尽管差异较小)。
此外,每个 epoch 结束时显示的损失并不是每个批次损失的平均值(例如使用 Keras 时)。这是他最后一批的损失。我也认为这可能是我的结果的一个原因,但事实证明并非如此。
Training samples: 783
Validation samples: 87
--
Training Step: 4 | total loss: 1.08214 | time: 1.327s
| Adam | epoch: 001 | loss: 1.08214 - acc: 0.7549 | val_loss: 0.53043 - val_acc: 0.9885 -- iter: 783/783
--
Training Step: 8 | total loss: 0.41462 | time: 1.117s
| Adam | epoch: 002 | loss: 0.41462 - acc: 0.9759 | val_loss: 0.17027 - val_acc: 1.0000 …
Run Code Online (Sandbox Code Playgroud)