ゼロから作るDeep Learningのエラー覚書 -MNISTの読み込み-

機械学習

ゼロつくの74ページ。MNISTデータセットを読み込む際の以下のソースコードをGoogle Colaboratoryで走らせようとしたらエラーが。(ソースコードはOreilly-JapanからGit-Hubで公開されていますが、一部省略しています。)

from dataset.mnist import load_mnist

(x_train, t_train), (x_test, t_test) = load_mnist(flatten=True, normalize=False)

エラーメッセージは次のようなものがでました。datasetフォルダ内のmnist.pyで書かれているload_mnistという関数の定義文に同じ文章があるので、どうやらそこがうまく機能していないようです。

    107 
    108     with open(save_file, 'rb') as f:
--> 109         dataset = pickle.load(f)
    110 
    111     if normalize:

ValueError: unsupported pickle protocol: 5

原因はdatasetフォルダ内に.pklファイルが生成されていることでした。実は以前自分のPCにインストールしたpythonで同じコードを動かしていたのですが、そのときパソコンに保存していたゼロつくの提供ファイル「deep-learning-from-scratch-master」をそのままgoogle deriveにコピーして持ってきたのでこのようなことになったみたいです。自分のPCにインストールしたpythonはバージョン 3.8でしたがGoogle Colaboratoryのバージョンは3.7です(2022年4月現在)。バージョン3.8で上のコードを動かすと自動的に mnist.pkl ファイルが生成されるようです。pickle5はバージョン3.7には対応しておらず、3.8からになるのでこのファイルがあるとGoogle Colaboratoryではうまく動作しなくなります。
ちなみにpython のバージョンは次のコードで確認できます。

!python -V

解決策: 結局、提供ファイル「deep-learning-from-scratch-master」をゼロつくのGit-Hubから新しく持ってきて、コードを動かしたら何の問題もなく動作しました。あるいは .pklファイルを削除すればうまく動作すると思います。

はじめは「unsupported pickle protocol: 5」というエラーが出ているので、pickle5をインストールしないといけないのではとか考えて、色々無駄なことをしていたのですが、大したコードの修正はいりませんでした。

参考サイト
pickleファイルの場所がわからない

コメント

タイトルとURLをコピーしました