其他分享
首页 > 其他分享> > 当enumerate时出现“_pickle.UnpicklingError: pickle data was truncated”错误的解决方案

当enumerate时出现“_pickle.UnpicklingError: pickle data was truncated”错误的解决方案

作者:互联网

当对通过Dataloader得到的数据进行enumerate()索引运算时,出现““_pickle.UnpicklingError: pickle data was truncated”错误

当运行代码如下:

for i, (images, labels) in enumerate(train_data_loader,0):

出现了上述的错误
在程序中并没有直接用到pickle库,出现上面错误不明就里。有一次我将电脑重启后,发现可以运行,我怀疑是因为在运行过程中某些变量没有清理完整,再次运行会与之前存储的数据发生冲突。也有可能是因为用Dataloader生成的train_data_loader的数量过大造成了溢出或者是直接截断(truncate)产生错误。我试着Dataloader中的batch_size的大小。


    train_data_loader = DataLoader(dataset=train_data, 
                                   num_workers=1,  
                                   batch_size=16,       #目标将batch_size=64改为16,解决了enumerate过程出错的问题,同时也防止通过CUDA利用GPU运算时内存不够的问题
                                   shuffle=True,
                                   pin_memory=True)

目标将batch_size=64改为16,解决了enumerate过程出错的问题,同时也防止通过CUDA利用GPU运算时内存不够的问题。
成功运行,解除错误

330
331
Epoch [1], Iter[332], Time:385.329348326, learning rate : 0.000199897, Train Loss: 0.461626321 Test Loss: 0.031681120 

标签:UnpicklingError,truncated,pickle,batch,train,enumerate,data,size
来源: https://blog.csdn.net/zhen15652/article/details/114260526