将Pandas DataFrame转为PyTorch Dataset时触发AttributeError错误的求助
问题原因及解决方法
错误原因
你代码里导入的Dataset是Hugging Face datasets库中的类,这个类是面向NLP场景的数据集封装,有自己的内部属性规范(比如必须包含_info属性)。但你是按照PyTorch原生Dataset的逻辑去实现的,两者接口不匹配,因此触发了AttributeError。
修正方法
1. 替换正确的Dataset导入
把导入语句换成PyTorch原生的Dataset类即可,你的自定义类逻辑不需要改动:
from torch.utils.data import Dataset
2. 更规范的实现方式(可选)
建议把整个DataFrame存在类实例中,而非单独存储列,后续扩展数据列时会更灵活:
import pandas as pd from torch.utils.data import Dataset class CustomDataset(Dataset): def __init__(self, src_file): self.df = pd.read_csv(src_file) def __len__(self): return len(self.df) def __getitem__(self, idx): row = self.df.iloc[idx] return row['A'], row['B']
3. 快速转换的替代方案
如果只是简单转换Pandas DataFrame为PyTorch Dataset,也可以用TensorDataset配合张量转换快速实现:
import torch from torch.utils.data import TensorDataset # 假设df是你的Pandas DataFrame tensor_a = torch.tensor(df['A'].values, dtype=torch.float32) tensor_b = torch.tensor(df['B'].values, dtype=torch.float32) dataset = TensorDataset(tensor_a, tensor_b)
内容的提问来源于stack exchange,提问作者Keithx
相关产品推荐
相关产品推荐

