Pytorch fastai 课程 lr_find() 中的问题

Problem in lr_find() in Pytorch fastai course

在学习本课程的 Jupyter 笔记本时 当这些行是 运行 时,我遇到了一个错误。 我知道 cnn_learner 行没有任何错误,问题出在 lr_find() 部分 看来learn.lr_find()不想return两个值!尽管它的文档说它 return 是一个元组。那是我的问题。

这些是代码行:

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

错误说:

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

第二行。
另外,我得到的这张图有一个 'marker',我想它是 lr_minlr_steep 的值之一 This is the graph

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

我通读了 lr_find 的功能,很明显它 return 是一个元组。它的文档字符串说

Launch a mock training to find a good learning rate and return suggestions based on suggest_funcs as a named tuple

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

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

如果您想阅读更多相关信息,可以在 fastai 论坛中查看 this post