Python3下UnicodeDecodeError和KeyError的解決方法
with?open(os.path.join(CIFAR_DIR,?"data_batch_1"),?'rb')?as?f: ????data?=?pickle.load(f,?encoding='bytes') ????print(type(data)) ????print(data.keys()) ????print(type(data[b'data'])) ????print(type(data[b'labels'])) ????print(type(data[b'batch_label'])) ????print(type(data[b'filenames'])) ????print(data[b'data'].shape) ????print(data[b'data'][0:2]) ????print(data[b'labels'][0:2]) ????print(data[b'batch_label']) ????print(data[b'filenames'][0:2])
1.cPickle是python2的包,對應python3的話,import pickle 就行。
2.在cifar的網頁上有標注python3需要在pickle.load的時候增加encoding=‘bytes’。
3.使用data的時候,需要b'data'和b'labels'來指定key。
2019-07-03
還有就是print的語法有點變化。