Fast Ai 使用了一种非常规的风格from fastai import *。
我个人不喜欢它,所以在 fastai 书的第 2 章中煞费苦心地确定了每个导入,但遇到了错误
AttributeError: 'Learner' object has no attribute 'fine_tune'
Run Code Online (Sandbox Code Playgroud)
然而,当我然后去做
from fastbook import *
Run Code Online (Sandbox Code Playgroud)
有用。这是一个非常奇怪的行为,因为如果上述导入完成,则对 cnn_learner 类或包含它的模块进行了一些操作,使其具有 Fine_tune 方法。
我想避免这种编码风格,那么我应该怎么做才能加载正确版本的 Learner?
小智 7
我刚刚面临完全相同的问题。看了他们的一个教程后,我发现 cnn 学习器不是从预期的包中导入的。
from fastai.vision.all import cnn_learner
# rather than
from fastai.vision.learner import cnn_learner
Run Code Online (Sandbox Code Playgroud)
调用该fine_tune方法然后按预期工作!
Fastai 做了很多猴子补丁。不仅适用于它自己的导入,还适用于其他库,例如pathlib或torch. 我个人也不喜欢这种编码风格,但事实就是如此。
我强烈建议创建一个单独的环境(例如通过 conda),在那里安装 fastai 并使用他们的from ... import *. 我过去曾尝试解决这些导入问题,但由于您不知道(除非您深入源代码)在哪里/什么内容被猴子修补,所以您将在missing attribute各处遇到类似的错误。
此外,它与其他一些库的兼容性也不佳。opencv我记得由于包依赖性,我很难让它工作,安装opencv破坏了 fastai 的一些功能(我后来才发现),因为覆盖了 fastai 在某些外部库中修补的东西。
| 归档时间: |
|
| 查看次数: |
794 次 |
| 最近记录: |