pytorch运行错误:ValueError: too many dimensions 'str'

问题:

   本人在使用BERT进行微调的时候,在读取数据的时候出现了一个错误:ValueError: too many dimensions 'str'
   于是我Debug了以后,发现问题出现在这个部分:tensor_labels = torch.tensor(labels, dtype=label_type),torch.tensor()是一个Python中用于创建tensor的一种方法(一个函数),具体来说语法如下:
torch.tensor(data, dtype=None, device=None, requires_grad=False),其中data的类型可以是:list, tuple, array, scalar等类型。
torch.tensor()可以从data中的数据部分做拷贝(而不是直接引用),根据原始数据类型生成相应的torch.LongTensor,torch.FloatTensor,torch.DoubleTensor:

a = torch.tensor([1, 2])
a.type()
'torch.LongTensor'

然后我查看了一下自己的这个data:labels,发现没什么问题,labels本身就是一个list,符合语法规则的,那到底为什么会出现错误说的'str'呢?于是我点开labels里面一看,发现里面虽然是一些代表分类标签的数字:0、1,但是这些数字的类型时‘str’也就是字符串,于是我找到了从数据获得标签的地方:
examples.append(readers.InputExample(guid=guid, texts=[sentence_a, sentence_b], label=int(label)))
在这个地方,我将每一条数据获得的标签label强制转换成了int类型,运行后发现work!!

总结:

遇到此问题,首先要去找到torch.tensor()这个函数中,data部分的数据中是str的数据,然后找到获得该str数据的地方做一下转换。

posted @ 2020-08-13 16:32  ZhangHT97  阅读(17953)  评论(0编辑  收藏  举报