【问题标题】:How to implement randomised log space search of learning rate in PyTorch?如何在 PyTorch 中实现学习率的随机对数空间搜索?
【发布时间】:2021-05-09 08:29:38
【问题描述】:

我希望微调 GNN,我的主管建议探索不同的学习率。我遇到了this tutorial video,他提到在实践中通常会进行超参数的随机日志空间搜索。为了介绍性教程,未涵盖此内容。

非常感谢任何有关如何在 PyTorch 中实现此目的的帮助或指示。谢谢!

【问题讨论】:

    标签: machine-learning deep-learning pytorch hyperparameters learning-rate


    【解决方案1】:

    以对数形式设置比例可以让您考虑更理想的学习率值,通常值低于 0.1

    假设您想要获取介于 0.1 (1e-1) 和 0.001 (1e-4) 之间的学习率值。然后,您可以通过在其上应用以 10 为底的对数,log10(0.1) = -1 和 log10(0.001) = -4,在对数刻度上设置此下限和上限。 Andrew Ng 在video 中提供了更清晰的解释。

    在 Python 中,您可以为此使用 np.random.uniform()

    searchable_learning_rates = [10**(-4 * np.random.uniform(0.5, 1)) for _ in range(10)]
    searchable_learning_rates
    >>>
    [0.004890650359810075,
     0.007894672127828331,
     0.008698831627963768,
     0.00022779163472045743,
     0.0012046829055603172,
     0.00071395500159473,
     0.005690032483124896,
     0.000343368839731761,
     0.0002819402550629178,
     0.0006399571804618883]
    

    如您所见,您可以尝试从0.0002819402550629178 到接近上限的0.008698831627963768 的学习率值。数组越长,您尝试的值就越多。

    按照您提供的视频中的示例代码,您可以通过将learning_rates 替换为searchable learning_rates 来实现学习率的随机日志搜索

    for batch_size in batch_sizes:
        for learning_rate in searchable_learning_rates:
        ...
        ...
    
    

    【讨论】:

      猜你喜欢
      • 2021-10-13
      • 2019-04-23
      • 2019-03-10
      • 2021-12-03
      • 2020-11-16
      • 1970-01-01
      • 2019-01-18
      • 2021-09-27
      • 2019-05-17
      相关资源
      最近更新 更多