Pytorch fastai 课程中 lr_find() 的问题

lih*_*rma 5 python machine-learning deep-learning pytorch fast-ai

在跟踪本课程的 Jupyter 笔记本时,我在运行这些行时遇到了错误。我知道该cnn_learner行没有任何错误,问题在于lr_find()似乎learn.lr_find()不想返回两个值的部分!尽管它的文档说它返回一个元组。这是我的问题。

这些是代码行:

learn = cnn_learner(dls, resnet34, metrics=error_rate)
lr_min,lr_steep = learn.lr_find()
Run Code Online (Sandbox Code Playgroud)

错误说:

not enough values to unpack (expected 2, got 1)
Run Code Online (Sandbox Code Playgroud)

对于第二行。另外,我得到了带有一个“标记”的图表,我认为它是或
的值之一这是图表lr_minlr_steep

当我learn.lr_find()仅运行时,即不捕获 ; 中的输出lr_min, lr_steep。它运行良好,但我没有得到最小和陡峭的学习率(这对我来说非常重要)

我通读了lr_finddoes ,很明显它返回一个元组。它的文档字符串说

启动模拟训练以找到良好的学习率并基于suggest_funcs命名元组返回建议

我复制了原始笔记本,当遇到此错误时,我运行了原始笔记本,得到了相同的结果。我也更新了笔记本,但没有改变!无论我在网上搜索此内容,都没有出现任何类型的错误。我发现的唯一相关的事情是lr_find()每次运行后返回不同的学习率结果,这完全没问题。

小智 12

我遇到了同样的问题,我发现lr_find()输出已更新。您可以将第二行替换为lrs = learn.lr_find(suggest_funcs=(minimum, steep, valley, slide)),然后分别替换使用lr_min和的lr_steep位置,这应该可以正常工作并解决您的问题。lrs.minimumlrs.steep

如果您想了解更多相关信息,可以查看fastai 论坛中的这篇文章。