1. 程式人生 > 實用技巧 >pytorch執行錯誤:ValueError: too many dimensions 'str'

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資料的地方做一下轉換。