2017-09-29 2 views
1

J'essaie de faire un travail de réseau de neurones, mais j'ai un code de fichier pour Python 2.7, et j'ai Python 3.6. C'est mon code:python pickle UnicodeDecodeError 'latin1' ne fonctionne pas

import _pickle as cPickle 
import gzip 
import numpy as np 
def load_data(): 
    k = gzip.open('../data/mnist.pkl.gz', 'rb') 
    training_data, validation_data, test_data = cPickle.load(k, encoding='latin1') 
    k.close() 
    return (training_data, validation_data, test_data) 

Et c'est l'erreur que je continue à obtenir:

File "mnist_loader.py", line 44, in load_data training_data, validation_data, test_data = cPickle.load(k, encoding='latin1')

UnicodeDecodeError: 'ascii' codec can't decode byte 0x90 in position 614: ordinal not in range(128)

En regardant à travers StackOverflow, j'ai vu des gens dire que je devrais mettre « encode = « latin1 » », de sorte que est ce que j'ai fait mais je continue à avoir le problème.

Merci beaucoup!

Répondre

0

Enfin, j'essayé:

with gzip.open('../data/mnist.pkl.gz', 'rb') as k: 
    training_data, validation_data, test_data = cPickle.load(k, encoding='latin1') 
    k.close() 
return (training_data, validation_data, test_data) 

Et il semble fonctionner, mais je ne sais pas pourquoi;)

Merci tout le monde!