【问题标题】:Val Loss starts close to zero and stays - Train loss normalVal 损失开始接近于零并保持 - 火车损失正常
【发布时间】:2019-11-07 09:32:41
【问题描述】:

我正在尝试优化基于 LSTM 回归的预测模型。因此,我在我的代码中放置了一个循环来找到最佳学习率。但我觉得有些不对劲。它开始时的验证损失接近于零并保持在那里(比较图片)。 Training- and Val-Loss

【问题讨论】:

  • 这不一定是错误。你能提供一些代码来展示你如何计算损失吗?如果您将 train/val-losses 除以 train/val-samples 的数量,该图会是什么样子?
  • 我只是使用了 MSE-Score model.compile(optimizer=tf.keras.optimizers.Adam(lr=0.001), loss='mean_squared_error') history = model.fit(x=X_Training, y=y_Training, epochs=1000, batch_size=BATCH_SIZE, validation_data=[X_Validierung, y_Validierung], shuffle=False, callbacks=[earlyStopping, mcp_save], verbose=0)
  • 目前看起来还不错。您的火车/验证拆分比例是多少?您总共有多少个实例?
  • 如何通过训练/验证样本的数量来划分训练/验证损失。我不知道该怎么做。我总共有 533 个样本。 300 用于训练(大约 55%) 130 用于验证(大约 25%) 103 用于测试(大约 20%)
  • model.fit() 返回一个“历史对象”,其中保存了历元的训练和验证损失。看看这个machinelearningmastery.com/…

标签: python validation tensorflow keras loss-function


【解决方案1】:

用于深度学习的数据非常少。

根据图表,您很可能过度拟合验证集。考虑到在测试时未启用 dropout 和/或验证非常容易的情况,还有其他情况下验证损失可能小于训练损失。

我的建议是大幅增加您的数据集,至少 20000 个样本按以下方式(16000 - 2000 - 2000)总共拆分。 LSTM 需要大量数据进行训练。

【讨论】:

    猜你喜欢
    • 2021-04-21
    • 2016-11-13
    • 2019-03-20
    • 2018-01-27
    • 2018-04-24
    • 1970-01-01
    • 2020-07-20
    • 2020-06-27
    • 2021-04-13
    相关资源
    最近更新 更多