J'essaie de charger le jeu de données mnist character (en suivant le tutoriel décrit ici: http://neuralnetworksanddeeplearning.com/chap1.html )
quand j'exécute la fonction load_data_wrapper, j'obtiens l'erreur.
UnicodeDecodeError: 'ascii' codec can't decode byte 0x90 in position 614: ordinal not in range(128)
Le code exécuté est:
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
MISE À JOUR: Le problème semble être que j'essaie de dissocier Python 3.6, qui a été traité avec Python 2.x.
Comme indiqué, le problème principal s'est révélé être une incompatibilité entre python 2.x cPickle et pickle 3.x.
régler l'encodage sur 'latin-1' semble fonctionner.
training_data, validation_data, test_data = pickle.load(f, encoding='latin1')
La réponse ici a beaucoup aidé: L’incompatibilité entre les tableaux numpy entre Python 2 et 3
Vous pouvez essayer ceci:
import chainer
train, test = chainer.datasets.get_mnist(ndim=1)