今天在运行代码中时遇到了下面的错误,经过多方努力后终于得到解决,在此记录一下。
错误日志如下:
>>> import mnist_loader
>>> training_data, validation_data, test_data=mnist_loader.load_data_wrapper()
根据以上信息可以判断出错处在pickle.load(f)调用的时候解码出了问题。
load函数是从文件中读出数据,并将其转换为对象数据。那么问题就出在直接调用load(f)不能将ascii解码为byte类型数据。
网上查了一堆资料,说的最多的是下面这种方式:
if sys.getdefaultencoding() != 'utf-8':
reload(sys)
sys.setdefaultencoding('utf-8')
然而,亲测后并没有解决问题。
后来查看了load接口,load在加载文件时是可以指定encoding类型的,于是将代码修改为
training_data, validation_data, test_data = pickle.load(f,encoding='bytes')
后问题解决(亲测有效)。
转自:
原文:https://blog.csdn.net/moyu123456789/article/details/79508674