属性错误:模块“torch”没有属性“_six”。 Pytorch 中的 Bert 模型

问题描述 投票:0回答:5

我尝试使用 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'
python deep-learning nlp pytorch bert-language-model
5个回答
10
投票

jupyter笔记本/实验室中,只需重新启动内核即可正常工作


7
投票

当我尝试加载 CIFAR10 数据集时遇到此错误。简单的重启并不能解决问题!我发现对于某些(conda)环境它工作得很好。

更新 torch 和 torchvision 有帮助:

pip install --upgrade torch torchvision

2
投票

我通过在vision.py中注释以下代码行解决了这个错误

if isinstance(root, torch._six.string_classes):
            root = os.path.expanduser(root)
        self.root = root

1
投票

我在 macOS 上也遇到了同样的问题,正如 Mark 提到的,重新启动我的 Mac 后它工作正常!


0
投票

我在使用 conda 的 Apple M1 下遇到了同样的问题,在使用最新版本的 python 创建新的 conda 环境,然后再次安装 torch 和 torchvision 后解决了它。

© www.soinside.com 2019 - 2024. All rights reserved.