Estoy intentando cargar el conjunto de datos MNIST vinculado here en Python 3.2 utilizando este programa:salmuera incompatibilidad de matrices numpy entre Python 2 y 3
import pickle
import gzip
import numpy
with gzip.open('mnist.pkl.gz', 'rb') as f:
l = list(pickle.load(f))
print(l)
Por desgracia, me da el error:
Traceback (most recent call last):
File "mnist.py", line 7, in <module>
train_set, valid_set, test_set = pickle.load(f)
UnicodeDecodeError: 'ascii' codec can't decode byte 0x90 in position 614: ordinal not in range(128)
Intenté decodificar el archivo escalado en Python 2.7 y volver a codificarlo. Por lo tanto, me encontré con este programa en Python 2.7:
import pickle
import gzip
import numpy
with gzip.open('mnist.pkl.gz', 'rb') as f:
train_set, valid_set, test_set = pickle.load(f)
# Printing out the three objects reveals that they are
# all pairs containing numpy arrays.
with gzip.open('mnistx.pkl.gz', 'wb') as g:
pickle.dump(
(train_set, valid_set, test_set),
g,
protocol=2) # I also tried protocol 0.
Se corrió sin error, por lo que volvió a ejecutar este programa en Python 3.2:
import pickle
import gzip
import numpy
# note the filename change
with gzip.open('mnistx.pkl.gz', 'rb') as f:
l = list(pickle.load(f))
print(l)
Sin embargo, me dio el mismo error que antes. ¿Cómo hago que esto funcione?
This is a better approach for loading the MNIST dataset.
hay cortes de compatibilidad entre 2.7 y 3.x. especialmente cadena vs unicode. Y elegir un objeto numpy requiere que ambos sistemas carguen el módulo numpy pero esos módulos son diferentes. Lo siento, no tengo una respuesta, pero esto podría no ser posible y probablemente no sea aconsejable. Si esto es algo grande (gzip), ¿tal vez hdf5 con las piquetas? –
@PhilCooper: Gracias, su comentario (¿publicar esto como una respuesta?) Me indicó la respuesta correcta. Podría haber usado hdf5, pero me pareció complicado de aprender, así que me fui con numpy.guardar/cargar y esto funcionó. –
h5py es muy simple de usar, casi con toda seguridad mucho más fácil que resolver problemas de compatibilidad nebulosos con matrices numpy de decapado. – DaveP