我尝试使用 pytorch 中的 BertModel 类加载预训练模型。
我在 torch 下有 _six.py,但它仍然显示模块“torch”没有属性“_six”
import torch
from pytorch_pretrained_bert import BertTokenizer, BertModel, BertForMaskedLM
# Load pre-trained model (weights)
model = BertModel.from_pretrained('bert-base-uncased')
model.eval()
~/anaconda3/lib/python3.7/site-packages/torch/nn/modules/module.py in __setattr__(self, name, value)
551 .format(torch.typename(value), name))
552 modules[name] = value
--> 553 else:
554 buffers = self.__dict__.get('_buffers')
555 if buffers is not None and name in buffers:
~/anaconda3/lib/python3.7/site-packages/torch/nn/modules/module.py in register_parameter(self, name, param)
140 raise KeyError("parameter name can't be empty string \"\"")
141 elif hasattr(self, name) and name not in self._parameters:
--> 142 raise KeyError("attribute '{}' already exists".format(name))
143
144 if param is None:
AttributeError: module 'torch' has no attribute '_six'
在jupyter笔记本/实验室中,只需重新启动内核即可正常工作
当我尝试加载 CIFAR10 数据集时遇到此错误。简单的重启并不能解决问题!我发现对于某些(conda)环境它工作得很好。
更新 torch 和 torchvision 有帮助:
pip install --upgrade torch torchvision
我通过在vision.py中注释以下代码行解决了这个错误
if isinstance(root, torch._six.string_classes):
root = os.path.expanduser(root)
self.root = root
我在 macOS 上也遇到了同样的问题,正如 Mark 提到的,重新启动我的 Mac 后它工作正常!
我在使用 conda 的 Apple M1 下遇到了同样的问题,在使用最新版本的 python 创建新的 conda 环境,然后再次安装 torch 和 torchvision 后解决了它。