如何解决无法从 torchvision.models.resnet 导入“BasicBlock”
我正在尝试通过执行此操作从 BasicBlock
导入类 torchvision.models.resnet
from torchvision.models.resnet import *
它没有给出任何错误,但是当我尝试在我的代码中使用 BasicBlock
类(应该已经导入)时,我收到了错误
NameError: name 'BasicBlock' is not defined
即使 BasicBlock
出现在 torchvision.models.resnet
但是当我这样导入时它不会出错
from torchvision.models.resnet import BasicBlock
然后在我的代码中使用它
为什么我会收到此错误?
解决方法
try:
execfile('file.py')
except:
# Re-Run flag | Repeat code
pass
确实被定义了,但是它不是由模块导出的:参见here BasicBlock
的定义。所以 torchvision/models/resnet.py 只导出这些:__all__
、ResNet
、resnet18
、resnet34
、resnet50
、{ {1}}、resnet101
、resnet152
、resnext50_32x4d
和 resnext101_32x8d
。
BasicBlock
是在 torchvision.models
下导入的,但不建议执行 import *
并导入所有内容,但如果您想这样做,然后使用 from torchvision.models import *
,您将无法获得错误。
import *
导入 __all__
变量下的所有内容,resnet 中的此变量具有 ['ResNet','resnet18','resnet34','resnet50','resnet101','resnet152','resnext50_32x4d','resnext101_32x8d','wide_resnet50_2','wide_resnet101_2']
,这就是为什么它为 NameError
BasicBlock
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。