【问题标题】:Plotting learning rate vs Loss绘制学习率与损失
【发布时间】:2021-11-02 12:20:59
【问题描述】:

我试图通过将学习率乘以一个常数因子来找到最佳学习率,然后他们根据不同的学习率训练模型。我需要在损失开始增加的转折点选择学习率再次。为此,我需要可视化学习率与损失图。我该怎么做。

改变速率的方法是

import math
l_rates = []
def schedule(epoch , lr):
  lr_new = lr * math.exp(math.log10(math.pow(10,6))/500)
  l_rates.append(lr_new)
  return lr_new

lr_scheduler_cb = keras.callbacks.LearningRateScheduler(schedule)

learning_rate_history = model1.fit(train_x , train_y , epochs=500 ,
                     callbacks=[lr_scheduler_cb])

【问题讨论】:

    标签: python plot deep-learning hyperparameters learning-rate


    【解决方案1】:

    您提出问题的方式表明您想尝试具有恒定学习率的不同模型以找到最佳模型,但您正在提高同一模型的学习率。出于多种原因,这很可能是一个坏主意。

    1. 您不是在测试具有不同学习率的模型,而是测试如果您在每个时期增加学习率会发生什么。

    2. 在监督学习中,当您接近最优时降低学习率是很常见的,并且需要采取更小的步骤,而不是更大的步骤。

    对于实际绘图,我建议使用matplotlib:

    import numpy as np
    import matplotlib.pyplot as plt
    
    # example values
    l_rates = np.array([1e-5, 1e-4, 1e-3, 1e-2, 1e-1])
    learning_rate_history = np.random.random(size=5)
    
    plt.plot(l_rates, learning_rate_history)
    plt.show();
    

    顺便说一句,you're doing grid search while random search is better。

    【讨论】:

    • 尝试以增加的学习率测试相同的模型,然后绘制损失与学习率的关系,并选择损失再次开始增加的学习率。 (学习率从 1e-5 到 10 不等
    • 然后用matplotlib中给定的代码绘制它
    猜你喜欢
    • 2021-11-27
    • 2020-05-15
    • 2020-10-22
    • 2021-04-15
    • 2021-03-29
    • 2017-06-22
    • 2018-12-27
    • 2020-11-09
    • 1970-01-01
    相关资源
    最近更新 更多