首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AttributeError:在从simpletransformers训练str时,QuestionAnsweringModel对象没有属性“to”

AttributeError:在从simpletransformers训练str时,QuestionAnsweringModel对象没有属性“to”
EN

Stack Overflow用户
提问于 2021-03-03 14:55:39
回答 1查看 450关注 0票数 0

我正在尝试训练QuestionAnsweringModel -bert-base-multilingual uncased从简单的变形器和面临的下一个问题:

代码语言:javascript
复制
AttributeError                            Traceback (most recent call last)
<ipython-input-10-40e9356ccee6> in <module>()
----> 1 model.train(traindata, output_dir='/content/drive/MyDrive')

1 frames
/usr/local/lib/python3.7/dist-packages/simpletransformers/question_answering/question_answering_model.py in train(self, train_dataset, output_dir, show_running_loss, eval_data, verbose, **kwargs)
    578                     steps_trained_in_current_epoch -= 1
    579                     continue
--> 580                 batch = tuple(t.to(device) for t in batch)
    581 
    582                 inputs = self._get_inputs_dict(batch)

/usr/local/lib/python3.7/dist-packages/simpletransformers/question_answering/question_answering_model.py in <genexpr>(.0)
    578                     steps_trained_in_current_epoch -= 1
    579                     continue
--> 580                 batch = tuple(t.to(device) for t in batch)
    581 
    582                 inputs = self._get_inputs_dict(batch)

AttributeError: 'str' object has no attribute 'to'

我的数据准备:

代码语言:javascript
复制
!wget https://onti2020.ai-academy.ru/task/rucos_test.jsonl
!wget https://onti2020.ai-academy.ru/task/rucos_val.jsonl
!wget https://onti2020.ai-academy.ru/task/rucos_train.jsonl.zip
!unzip rucos_train.jsonl.zip
代码语言:javascript
复制
!pip install nltk
import nltk
nltk.download('all')
from nltk.tokenize import word_tokenize
代码语言:javascript
复制
def get_train_data(jsonfile):
    res=[]
    with open(jsonfile, 'r') as data:
        trainlist=list(data)
        for item in tqdm(trainlist):
            item=json.loads(item)
            dictt={}
            dictt['context']=word_tokenize(item['passage']['text'])
            qas=[]
            qlist=item['qas']
            for q in qlist:
                qdict={}
                qdict['id']=str(q['idx']).rjust(6, '0')
                answers=[]
                qdict['is_impossible']=True
                qdict['question']=q['query']
                alist=q['answers']
                for a in alist:
                    adict={}
                    adict['text']=a['text']
                    adict['answer_start']=a['start']
                    answers.append(adict)
                qdict['answers']=answers
                qas.append(qdict)
            dictt['qas']=qas
            res.append(dictt)
    return res
代码语言:javascript
复制
traindata, evaldata=get_train_data('rucos_train.jsonl'), get_train_data('rucos_val.jsonl')

模型构建:

代码语言:javascript
复制
!pip install simpletransformers
!pip install torch==1.5.0
代码语言:javascript
复制
from simpletransformers.question_answering import QuestionAnsweringModel, QuestionAnsweringArgs
model = QuestionAnsweringModel(
    "bert",
    "bert-base-multilingual-uncased",
    args=QuestionAnsweringArgs(n_best_size=2)
)

模型训练:

代码语言:javascript
复制
model.train(traindata, output_dir='/content/drive/MyDrive')

这段代码是在Colab Pro中执行的,并且基于文档https://simpletransformers.ai/docs/qa-model/

请帮我解决这个问题。

EN

回答 1

Stack Overflow用户

发布于 2021-04-19 14:47:34

你必须使用train_model函数而不是train函数。

代码语言:javascript
复制
model.train_model(traindata)

希望这个答案还不算太晚。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66452124

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档