1

我希望微调 GNN,我的主管建议探索不同的学习率。我遇到了这个教程视频,他提到在实践中通常会进行超参数的随机日志空间搜索。为了介绍性教程,这没有被涵盖。

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

4

1 回答 1

1

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

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

在 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-02-05T05:27:03.290 回答