開発のヒホ

iOSとかAndroidとかのアプリを開発するのに四苦八苦するブログ

MNIST読み込み時に「UnicodeDecodeError: 'ascii' codec can't decode byte...」エラー

 Python機械学習を試す際、MNISTという名の学習用データを使わせてもらうことが多いです。しかし日本語環境によってはデータをロードする際に以下の様なエラーが出て読み込めないことがあります。

load.py

f = gzip.open(dataset, 'rb')
train_set, valid_set, test_set = pickle.load(f)
f.close()

↓エラー

File "load.py", line 209, in load_data
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)

 何故かはよくわかりませんが、バイナリデータにも関わらずasciiコードで読もうとしてエラーを吐いているようです。encodingを指定してやると解決します

load.py

f = gzip.open(dataset, 'rb')
train_set, valid_set, test_set = pickle.load(f, encoding='latin1')
f.close()