【问题标题】:What should we try: low or high learning rate?我们应该尝试什么:低学习率还是高学习率?
【发布时间】:2017-08-01 01:32:13
【问题描述】:

我正在调整 SGD 和 Adam 的学习率。我将首先尝试使用 SGD。我有一个关于学习率选择的问题。我应该首先尝试什么:低学习率还是高学习率?我阅读了一些建议尝试使用高学习率然后通过调度来降低它的参考资料。这样对吗? 对于亚当来说,这是一个自适应学习率。 Adam 方法的学习率往往不到 SGD 学习率的 5 倍或 10 倍是不是?

【问题讨论】:

  • 取决于您的数据集。您可以使用交叉验证选择正确的学习率。
  • 谢谢。问题很耗时。我在训练集中有 5 个科目。我将使用 4 个主题进行训练和 1 个主题进行验证。不要担心有限的数据集,因为这是我的任务。我将通过随机选择 1 个主题进行验证,剩余 4 个主题进行训练并选择一个学习率来使用交叉验证。每次,我必须花 1 天时间来完成它。因此,对于 4 次交叉验证,我必须花费大约 4 天。并再次改变学习率。您对交叉验证有什么建议吗?

标签: machine-learning tensorflow neural-network deep-learning


【解决方案1】:

学习率取决于您的数据和您的问题。然而,Adam 优化器通常被认为是更高级的优化器,因为它会在训练时调整学习率。在训练时调整学习率可​​以让你不会陷入局部最优,也不会对训练集中的某些类型的数据产生偏见。我不确定您使用的是什么库,但无论如何,绘制您的训练和验证将是值得的,以可视化您的损失以更好地了解正在发生的事情。例如,如果您使用 Keras,这很容易......

# Record the Keras history object for plotting
keras_history_object = model.fit_generator(batch_generator(training_data, batch_size),
                                            steps_per_epoch=(len(training_data) * 3) / batch_size,
                                            epochs=epochs,
                                            verbose=1,
                                            validation_data=batch_generator(validation_data, batch_size),
                                            validation_steps=(len(validation_data) * 3) / batch_size)


# Plot the training and validation losses for visualization of this session
plt.figure(1, figsize=(25, 15))
plt.subplot(211)
plt.plot(keras_history_object.history['loss'])
plt.plot(keras_history_object.history['val_loss'])
plt.title(loss)
plt.ylabel(loss)
plt.xlabel('Epoch')
plt.legend(['Training set', 'Validation set'], loc='upper right')
plt.show()

【讨论】:

    猜你喜欢
    • 2020-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-06
    • 2010-10-17
    • 1970-01-01
    • 2023-03-18
    • 2020-11-20
    相关资源
    最近更新 更多