質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.36%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Unicode

Unicodeはエンコーディングの標準規格です。1つの文字コード体系で多国語の表現を可能にすることを目指して作られています。

Q&A

解決済

1回答

11894閲覧

python3でpickleを使ってCIFAR10を読み込むと「UnicodeDecodeError」...

tsuruchan

総合スコア15

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Unicode

Unicodeはエンコーディングの標準規格です。1つの文字コード体系で多国語の表現を可能にすることを目指して作られています。

1グッド

0クリップ

投稿2016/03/04 03:51

ChainerでCIFAR-10の分類をしようと思ったのですが、データを読み込むところでエラーが発生して調べても解決策がわからなかったので質問させていただきます。

http://nonbiri-tereka.hatenablog.com/entry/2015/06/21/220506
http://www.cs.toronto.edu/~kriz/cifar.html
上記のサイトを参考に、このようなコードを実行すると、

python

1import pickle 2import numpy as np 3 4def unpickle(file): 5 fo = open(file, 'rb') 6 dict = pickle.load(fo) 7 fo.close() 8 return dict 9 10X_train = None 11y_train = [] 12 13for i in range(1,6): 14 data_dic = unpickle("cifar-10-batches-py/data_batch_{}".format(i)) 15 if X_train == None: 16 X_train = data_dic['data'] 17 else: 18 X_train = np.vstack((X_train, data_dic['data'])) 19 y_train += data_dic['labels'] 20 21test_data_dic = unpickle("cifar-10-batches-py/test_batch") 22x_test = test_data_dic['data'] 23x_test = x_test.reshape(len(x_test),3,32,32) 24y_test = np.array(test_data_dictionary['labels']) 25x_train = x_train.reshape((len(x_train),3, 32, 32)) 26y_train = np.array(y_train) 27

以下のようなエラーがでます。

In []: %run CIFAR10.py --------------------------------------------------------------------------- UnicodeDecodeError Traceback (most recent call last) /home/tomoya/CIFAR10.py in <module>() 14 15 for i in range(1,6): ---> 16 data_dic = unpickle("cifar-10-batches-py/data_batch_{}".format(i)) 17 if X_train == None: 18 X_train = data_dic['data'] /home/tomoya/CIFAR10.py in unpickle(file) 6 def unpickle(file): 7 fo = open(file, 'rb') ----> 8 dict = pickle.load(fo) 9 fo.close() 10 return dict UnicodeDecodeError: 'ascii' codec can't decode byte 0x8b in position 6: ordinal not in range(128)

環境は
・ Ubuntu 14.04
・ python 3.5.1 (Anaconda 2.5.0)

解決策もしくは、他の方法でデータを読み込む方法を教えてください!

よろしくお願いします。

task_woof👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

python

1import sys 2import pickle 3import numpy as np 4 5def unpickle(file): 6 fp = open(file, 'rb') 7 if sys.version_info.major == 2: 8 data = pickle.load(fp) 9 elif sys.version_info.major == 3: 10 data = pickle.load(fp, encoding='latin-1') 11 fp.close() 12 13 return data 14 15X_train = None 16y_train = [] 17 18for i in range(1,6): 19 data_dic = unpickle("cifar-10-batches-py/data_batch_{}".format(i)) 20 if i == 1: 21 X_train = data_dic['data'] 22 else: 23 X_train = np.vstack((X_train, data_dic['data'])) 24 y_train += data_dic['labels'] 25 26test_data_dic = unpickle("cifar-10-batches-py/test_batch") 27X_test = test_data_dic['data'] 28X_test = X_test.reshape(len(X_test),3,32,32) 29y_test = np.array(test_data_dic['labels']) 30X_train = X_train.reshape((len(X_train),3, 32, 32)) 31y_train = np.array(y_train)

このように変更したら成功しました!

投稿2016/03/04 04:00

編集2016/03/04 04:01
tsuruchan

総合スコア15

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問