Python 无法通过Pytorch Dataloader进行迭代。不等张量

Python 无法通过Pytorch Dataloader进行迭代。不等张量,python,pytorch,dataloader,Python,Pytorch,Dataloader,我正在imdb上训练一个基于BERT的模型。但是,我无法迭代Pytorch数据加载器 这是完全可复制的代码。培训文件为上述csv 导入变压器 从sklearn导入模型_选择 进口火炬 作为pd进口熊猫 tokenizer=transformers.BertTokenizer.from_pretrained(“bert base cased”,do_lower_case=True) 最大长度=512 列车批次尺寸=8 """ 此类将评论和目标作为参数 -拆分评论和标记 """ 类数据集: 定义初始

我正在
imdb
上训练一个基于BERT的模型。但是,我无法迭代Pytorch数据加载器

这是完全可复制的代码。培训文件为上述csv

导入变压器
从sklearn导入模型_选择
进口火炬
作为pd进口熊猫
tokenizer=transformers.BertTokenizer.from_pretrained(“bert base cased”,do_lower_case=True)
最大长度=512
列车批次尺寸=8
"""
此类将评论和目标作为参数
-拆分评论和标记
"""
类数据集:
定义初始(自我、审核、目标):
self.review=回顾
self.target=目标
self.tokenizer=tokenizer
self.max\u len=max\u len
定义(自我):
返回len(自我审查)
定义获取项目(自身,项目):
回顾=str(自我回顾[项目])
review=”“.join(review.split())
标记化的_输入=self.tokenizer.encode_plus(
回顾,
没有一个
添加\u特殊\u标记=真,
最大长度=自最大长度,
padding=True,
截断=真
)
ids=标记化的_输入[“输入_ID”]
掩码=标记化的\u输入[“注意\u掩码”]
令牌\u类型\u ID=令牌化的\u输入[“令牌\u类型\u ID”]
返回{
“ids”:火炬张量(ids,dtype=torch.long),
“掩码”:火炬张量(掩码,数据类型=火炬长),
“token\u type\u id”:torch.tensor(token\u type\u id,dtype=torch.long),
“目标”:火炬张量(self.target[item],dtype=torch.float),
}
dfx=pd.read\u csv(培训文件).fillna(“无”)
dfx['touction']=dfx['touction'].应用(如果x=='positive'否则为0,则λx:1)
df\U列车,df\U有效=模型选择。列车测试\U拆分(
dfx,
试验尺寸=0.1,
随机状态=42,
分层=dfx[“情感”]。值
)
#重置索引
df_列=df_列。重置_索引(下降=真)
#获取ID、令牌、掩码和目标
训练数据集=训练数据集(回顾=df训练['review'],目标=df训练['Operation'])
#加载到pytorch数据集对象中
#DataLoader输入输入和目标的张量数据集
train\u data\u loader=torch.utils.data.DataLoader(train\u数据集,批次大小=train\u批次大小,工人数量=0)
#迭代到数据加载器
iter列=iter(数据列装载机)
印刷品(类型(列车)
回顾,标签=培训,下一步()
出现以下错误

运行时错误回溯(最近一次调用)
在()
2份打印件(类型(iter列))
3.
---->4个图像,标签=火车站。下一个()
5帧
/默认情况下的usr/local/lib/python3.6/dist-packages/torch/utils/data//u utils/collate.py\u collate(批处理)
53存储=元素存储()
54输出=元件新(存储)
--->55返回火炬堆(批次,0,输出=输出)
56 elif元素类型。uuuu模块uuu=='numpy'和元素类型。uuuu名称uuuu!='str_'\
57和元素类型字符串“:
RuntimeError:堆栈期望每个张量大小相等,但在条目0处得到[486],在条目1处得到[211]
数据加载器中的num_workers=0修复了内存问题。有人能帮我弄清楚我遗漏了什么吗