使用Bert报错:Bert输出为字符串

 

1、解决办法

 参考:通过CCproxy配置内网linux服务器_cc proxy-CSDN博客

按照解决办法1,重新下载transformers,仍然报错

2、解决办法

在网上查找资料后发现, 这和tranformers库的版本有关系。在transfromer库3.X版本后,模型不再返回张量的元组,而是返回特定对象。pip show transformer指令查看版本。如果版本高于4.0,那么输出的确实会是字符串,解决办法是在一开始的模型定义语句里增加一个参数return_dict=flase,让模型正确返回一个元组。

  如果不想考虑这么麻烦,或者加上了return_dict后,解释器报错,那就直接用x=bert_model([input_ids,attention_mask,token_type_ids])[1]即可。因为模型的输出是包含两个张量的元组。第一部分是所有时刻的输出,第二部分就是最后一层隐藏层的输出。用[1]就能直接得到最后一层张量,避免了格式问题。

(1)return_dict=true仍然报错

(2)return_dict=false正确 

参考:https://www.cnblogs.com/namezhyp/p/17729668.html

你可能感兴趣的:(bert,人工智能,深度学习)