Fast Ai使用了一种非常非传统风格的from fastai import *等。
就我而言,我不喜欢它,所以我费力地识别chapter 2 of the fastai book中的每个导入,但却遇到了错误
AttributeError: 'Learner' object has no attribute 'fine_tune'然而,当我随后去做
from fastbook import *它起作用了。这是一个非常奇怪的行为,因为如果完成了上面的导入,就会对cnn_learner类或包含它的模块执行一些操作,使其具有fine_tune方法。
我想避免这种编码风格,那么我应该怎么做才能加载正确版本的Learner?
发布于 2020-12-08 21:25:37
我刚刚遇到了完全相同的问题。在看了他们的一个教程后,我发现cnn learner并不是从预期的包中导入的。
from fastai.vision.all import cnn_learner
# rather than
from fastai.vision.learner import cnn_learner然后调用fine_tune方法即可正常工作!
发布于 2020-12-08 21:47:46
Fastai做了大量的猴子补丁。不仅导入到它自己的库中,还导入到其他库中,如pathlib或torch。我个人也不喜欢这种编码风格,但它就是这样。
我强烈建议创建一个单独的环境(例如通过conda),在那里安装fastai并使用他们的from ... import *。我过去曾尝试过解决这些导入问题,但由于您不知道(除非您深入研究源代码)在哪里/什么地方进行了猴子修补,因此您将会到处遇到missing attribute和类似的错误。
此外,它与其他一些库也不能很好地配合。我记得,由于软件包的依赖性,我很难让它与opencv一起工作,安装opencv破坏了fastai的一些功能(我后来才发现),因为它覆盖了一些外部库中由fastai打补丁的东西。
https://stackoverflow.com/questions/65128126
复制相似问题