在Pytorch fastai课程中lr_find()函数的问题

在学习课程的Jupyter笔记本时,运行某些代码行时遇到了错误。我知道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的值之一这是图表

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

我阅读了lr_find的功能说明,很明显它会返回一个元组。它的文档字符串中说

启动一个模拟训练以找到一个好的学习率,并根据suggest_funcs返回建议,作为一个命名的元组

我复制了原始笔记本,当我遇到这个错误时,我运行了原始笔记本,结果相同。我也更新了笔记本,但没有变化!无论我在网上搜索哪里,都没有出现任何形式的错误。我找到的唯一相关信息是lr_find()在每次运行后返回不同的学习率结果,这是完全正常的。


回答:

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

如果你想了解更多,可以查看fastai论坛中的这个帖子

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注