【error】舊版本的torchtext會出現的問題

出錯代碼:

torch.save(vocab_en, opt.vocab_path)

或pickle.dump(dict(vocab_en), open(opt.vocab_path,'wb'))

都會報pickle的錯誤

 

其中

from torchtext import data
EN = data.Field(init_token=EOS, eos_token=EOS, lower=True)
train_data, val_data, test_data = datasets.TranslationDataset.splits(path=opt.data, train='train', validation='valid', test='test',exts=('.input', '.output'), fields=(EN, EN)) 
EN.build_vocab(train_data.src, train_data.trg, min_freq=opt.min_freq)

return EN.vocab

 

pip list 查看torchtext版本,發現版本0.1.1,懷疑是版本太低的問題

 

pip --upgrade torchtext 升級版本,問題解決

 

另一種解決問題的方式:

使用dill代替pickle

https://blog.csdn.net/cswangjiawei/article/details/83067754

 

torch.save會報pickle錯誤的原因是 其內部默認也是利用pickle實現的,在torch.save時改變一個參數,使其內部利用dill實現,也可以解決這個問題

 

參考:https://github.com/pytorch/text/issues/73

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章