私はmnistキャラクターデータセットをロードしようとしています(ここで概説されているチュートリアルに従います http://neuralnetworksanddeeplearning.com/chap1.html )
load_data_wrapper関数を実行すると、エラーが発生します。
UnicodeDecodeError: 'ascii' codec can't decode byte 0x90 in position 614: ordinal not in range(128)
コード実行は次のとおりです。
import numpy as np
import gzip
def load_data():
f = gzip.open('../data/mnist.pkl.gz', 'rb')
training_data, validation_data, test_data = pickle.load(f)
f.close()
return (training_data, validation_data, test_data)
def load_data_wrapper():
tr_d, va_d, te_d = load_data()
training_inputs = [np.reshape(x, (784,1)) for x in tr_d[0]]
training_results = [vectorized_result(y) for y in tr_d[1]]
training_data = Zip(training_inputs, training_results)
validation_inputs = [np.reshape(x,(784, 1))for x in va_d[0]]
validation_data = Zip(validation_inputs, va_d[1])
test_inputs = [np.reshape(x, (784, 1)) for x in te_d[0]]
test_data = Zip(test_inputs, te_d[1])
return(training_data, validation_data, test_data)
def vectorized_result(j):
e = np.zeros((10,1))
e[j] = 1.0
return e
更新:問題は私がpython 3.6 python 2.x.
述べたように、主な問題は、python 2.x cPickleとpython 3.x pickle。
エンコーディングを「latin-1」に設定すると機能するようです。
training_data, validation_data, test_data = pickle.load(f, encoding='latin1')
ここでの回答は多くの助けとなりました: Python 2と3 の間のnumpy配列のピクルの非互換性
あなたはこれを試すことができます:
import chainer
train, test = chainer.datasets.get_mnist(ndim=1)