Pytorch fastai 课程中 lr_find() 的问题

问题描述

在遵循 Jupyter notebooks 课程时 运行这些行时我遇到了错误。 我知道 cnn_learner 行没有任何错误,问题在于 lr_find() 部分 看来 learn.lr_find() 不想返回两个值!尽管它的文档说它返回一个元组。那是我的问题。

这些是代码行:

learn = cnn_learner(dls,resnet34,metrics=error_rate)
lr_min,lr_steep = learn.lr_find()

错误说:

not enough values to unpack (expected 2,got 1)

为第二行。
另外,我得到了带有一个标记”的图表,我认为它是 lr_minlr_steep 的值之一 This is the graph

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

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

启动模拟训练以找到一个好的学习率并返回基于 suggest_funcs 作为命名元组

的建议

我复制了原始笔记本,当我遇到此错误时,我运行了原始笔记本,结果相同。我也更新了笔记本,但没有变化! 无论我在哪里在线搜索,都没有出现任何类型的错误。我发现唯一相关的是 lr_find() 在每次运行后返回不同的学习率结果,这非常好。

解决方法

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

如果您想了解更多信息,可以在 fastai 的论坛中查看 this post