Fast Ai: AttributeError: 'Learner' object has no attribute 'fine_tune'

Fast Ai: AttributeError: 'Learner' object has no attribute 'fine_tune'

Fast Ai使用了from fastai import *等非常非常规的风格

我不喜欢它,所以在 chapter 2 of the fastai book 中煞费苦心地识别每个导入,但 运行 进入错误

AttributeError: 'Learner' object has no attribute 'fine_tune'

然而,当我再去做

from fastbook import *

有效。这是一个非常奇怪的行为,因为如果完成上述导入,对 cnn_learner class 或包含它的模块进行了一些操作,使其具有 fine_tune 方法。

我想避免这种编码风格,那么我应该怎么做才能加载正确版本的 Learner?

我刚刚遇到了完全相同的问题。在看了他们的一个教程后,我发现 cnn 学习器不是从预期的包中导入的。

from fastai.vision.all import cnn_learner
# rather than
from fastai.vision.learner import cnn_learner

调用 fine_tune 方法然后按预期工作!

Fastai 做了很多猴子补丁。不仅是它自己的导入,还有其他库,例如 pathlibtorch。我个人也不喜欢这种编码风格,但它就是这样。

我强烈建议创建一个单独的环境(例如通过 conda),在那里安装 fastai 并使用他们的 from ... import *。我过去曾尝试解决这些导入问题,但由于您不知道(除非您深入研究源代码)where/what 已被猴子修补,您将 运行 变成 missing attribute 并且到处都是类似的错误。

此外,它不能很好地与其他一些库一起使用。我记得由于包依赖性,我很难让它与 opencv 一起工作,其中安装 opencv 破坏了 fastai 的一些功能(我后来才发现),因为覆盖了 fastai 已经修补的东西在一些外部库中。