运行MAMS-for-ABSA库的bert_capsnet模型出现Byte转Bool类型报错
报错根因
该错误是PyTorch版本兼容性导致的:PyTorch 1.2及后续版本中,逻辑运算符&要求两边的操作数均为布尔类型(BoolTensor),原代码中调用.byte()得到的是uint8类型的ByteTensor,和期望的布尔类型不匹配,因此触发类型转换错误。
解决步骤
- 打开报错对应的文件
/content/drive/MyDrive/MAMS-for-ABSA/src/aspect_term_model/bert_capsnet.py,定位到第66行的代码:
sentence_mask = segment_mask & ((1 - bert_segment).byte())
- 将代码中的
.byte()替换为.bool(),修改后代码如下:
sentence_mask = segment_mask & ((1 - bert_segment).bool())
如果修改后仍然提示类型不匹配,可以将两边的张量都统一转为布尔类型:
sentence_mask = segment_mask.bool() & ((1 - bert_segment).bool())
修改完成后重新运行训练脚本即可正常执行。
内容的提问来源于stack exchange,提问作者yasmine amine
相关产品推荐
相关产品推荐

