2016-09-16 10 views
1

CIFAR-10データセットからデータファイルを読み込もうとしています。私はそれをダウンロードしましたが、私はファイルを読むことができません。 ファイルを読むために使用しているコード。「バイナリ(アプリケーション/オクテットストリーム)」ファイルをPythonで読むことができませんか?

def unpickle(file): 
    print(file) 
    import pickle 
    fo = open(file, 'rb') 
    dict = cPickle.load(fo) 
    fo.close() 
    return dict 
    file = 'data_batch_1' 

あなたが取得しているので、「

Traceback (most recent call last): 
File "basiccnn.py", line 28, in <module> 
data1 = unpickle(file) 
File "basiccnn.py", line 23, in unpickle 
dict = cPickle.load(fo) 
UnicodeDecodeError: 'ascii' codec can't decode byte 0x8b in position 6: ordinal not in range(128) 
+0

あなたはピクルファイルを持っていると信じていますか? –

+0

@ IgnacioVazquez-Abrams、https://www.cs.toronto.edu/~kriz/cifar.html –

+0

Pythonのバージョンをダウンロードしましたか? –

答えて

0

をエラーを示している。

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

あなたはエンコーディングの問題を持っているように見えるpickle.loads()によると、デフォルトのエンコードASCIIが使用されています。おそらくそのエラーが発生している可能性があります。エンコーディングを設定する〜問題を修正し "バイト":

data = pickle.load(fo, encoding='bytes') 

つ以上のもの:

  1. cPickleはPythonの3に_pickleに名前が変更されましたが、あなたは本当にただpickleを使用する必要があります。

  2. 変数を組み込み型と同じ名前にするのは面倒です。 dictは辞書データ型で使用されます。代わりにdataのような他のあいまいな名前を使用してください。

関連する問題