You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PyTorch DataLoader TypeError求助:RoBERTa情感分析任务报错

RoBERTa情感分析DataLoader TypeError问题分析与解决

嘿,我来帮你拆解这个问题,其实根源很明显,咱们一步步来:

问题定位

你在执行dt = next(iter(train_data_loader))时触发了如下错误:

TypeError: new(): invalid data type 'str'

这个错误直接指向你GPReviewDataset类__getitem__方法里的这行代码:

'targets': torch.tensor(target, dtype=torch.long)

核心原因是:你传入的target是字符串类型,但torch.long要求输入必须是数值型(整数),PyTorch无法直接将字符串转换为long类型的张量。

为什么会出现这个情况?

看你的create_data_loader函数,你直接从DataFrame中提取df.sentiment.to_numpy()作为targets传入Dataset:

targets=df.sentiment.to_numpy(),

这说明你的DataFrame里的sentiment列存储的是字符串形式的标签(比如"positive"/"negative"这类文本),而不是0/1或者其他整数编码的数值标签。

解决方案

你需要先把字符串类型的情感标签转换为整数,这里提供两种常用的处理方式:

方式1:提前预处理DataFrame

在创建DataLoader之前,直接对DataFrame的sentiment列做编码转换:

# 假设你的标签是"positive"(正面)和"negative"(负面)
df['sentiment'] = df['sentiment'].map({'positive': 1, 'negative': 0})
# 如果是多分类,比如包含"neutral"(中性),可以扩展映射
# df['sentiment'] = df['sentiment'].map({'positive': 2, 'neutral': 1, 'negative': 0})

方式2:在Dataset类内部处理标签

如果你不想修改原始DataFrame,也可以在GPReviewDataset的__getitem__方法中完成标签转换:

def __getitem__(self, item):
    review = str(self.reviews[item])
    target = self.targets[item]
    
    # 新增:将字符串标签转换为整数
    label_mapping = {'positive': 1, 'negative': 0}
    target = label_mapping[target]
    
    encoding = self.tokenizer.encode_plus(
        review,
        add_special_tokens=True,
        max_length=self.max_len,
        return_token_type_ids=False,
        pad_to_max_length=True,
        return_attention_mask=True,
        return_tensors='pt',
    )
    return {
        'review_text': review,
        'input_ids': encoding['input_ids'].flatten(),
        'attention_mask': encoding['attention_mask'].flatten(),
        'targets': torch.tensor(target, dtype=torch.long)
    }

验证小技巧

修改完成后,建议先单独测试Dataset的__getitem__方法,确认返回的targets是整数类型的张量:

# 假设你已经创建了ds实例
sample_data = ds[0]
print("Target类型:", type(sample_data['targets']))
print("Target值:", sample_data['targets'])

确认输出是整数类型的张量后,再运行DataLoader的代码,就不会再触发这个错误了。

内容的提问来源于stack exchange,提问作者Markus Khoa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.11 08:14:53