Kaz*_*Sar 15 python text-classification tensor mlp bert-language-model
尝试使用 BERT 模型制作文本情感分类器,但得到ValueError : too many dimensions 'str'
这是列车数据值的 DataFrame;所以它们是train_labels
0 notr
1 notr
2 notr
3 negative
4 notr
... ...
854 positive
855 notr
856 notr
857 notr
858 positive
Run Code Online (Sandbox Code Playgroud)
并且有代码产生错误
train_seq = torch.tensor(tokens_train['input_ids'])
train_mask = torch.tensor(tokens_train['attention_mask'])
train_y = torch.tensor(train_labels.tolist())
Run Code Online (Sandbox Code Playgroud)
At train_y = torch.tensor(train_labels.tolist());
出现错误:
ValueError: too many dimensions 'str'
你能帮我吗
cod*_*ina 11
原因
问题是您在 torch.tensor() 中传递字符串列表 (str) ,它只接受数值列表(整数、浮点数等)。
解决方案
因此,我建议您在将字符串标签传递给 torch.tensor() 之前将其转换为整数值。
执行
以下代码可能对您有帮助
# a temporary list to store the string labels
temp_list = train_labels.tolist()
# dictionary that maps integer to its string value
label_dict = {}
# list to store integer labels
int_labels = []
for i in range(len(temp_list)):
label_dict[i] = temp_list[i]
int_labels.append(i)
Run Code Online (Sandbox Code Playgroud)
现在将此 int_labels 传递给 torch.tensor 并将其用作标签。
train_y = torch.tensor(int_labels)
Run Code Online (Sandbox Code Playgroud)
每当你想查看任何整数的相应字符串标签时,只需使用 label_dict 字典即可。
小智 11
我遇到了同样的问题:这对我有用,我想您需要在阅读 csv 后在代码开头执行此操作:
df['labels'] = df['labels'].replace(['negative','notr','positive'],[0,1,2])
然后从这些标签中分离出来进行训练和测试。
归档时间: |
|
查看次数: |
38076 次 |
最近记录: |