我希望微调 GNN,我的主管建议探索不同的学习率。我遇到了这个教程视频,他提到在实践中通常会进行超参数的随机日志空间搜索。为了介绍性教程,这没有被涵盖。
非常感谢任何有关如何在 PyTorch 中实现此目的的帮助或指示。谢谢!
我希望微调 GNN,我的主管建议探索不同的学习率。我遇到了这个教程视频,他提到在实践中通常会进行超参数的随机日志空间搜索。为了介绍性教程,这没有被涵盖。
非常感谢任何有关如何在 PyTorch 中实现此目的的帮助或指示。谢谢!
以对数形式设置比例可以让您考虑更理想的学习率值,通常值低于 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:
...
...