マトリョーシカ的日常

ワクワクばらまく明日のブログ。

Kerasでcifar-10の物体認識をする際にいろんなエラーが起こったがなんとかなった。

f:id:kyokucho1989:20180927053546j:plain

Photo by Zoltan Tasi on Unsplash

(i)

 ふいに文章が書ける大気が生じた。昨日少しだけ降った雨によって街は全体的に湿っていて、それが冷たい空気を一層強めている。通勤途中の道でみつけたあれは、おそらくカマキリの卵だろうか。梅の枝にしっかりと溶着していた。日々同じ道を行き来する中で新しいものごとを生み出す要請があって、私はそれにしたがっている。それはそれである。

(ii)

 ようやくディープラーニングを進めることができる。以前の記事でchainerによるCIFAR-10の物体認識にチャレンジしたが、どうもエラーが出てうまくいかなかった。
ChainerによるCIFAR-10の一般物体認識 (1) - 人工知能に関する断創録
 そこで視点を変えることにして、chainerではなくKerasというやつでやってみることにした。何が違うのかよくわからないけど、Kerasのほうがいろいろ簡単になるらしい。

 まずは描画してみよう。
KerasでCIFAR-10の一般物体認識 - 人工知能に関する断創録


 それができなかった。めっちゃエラーが出たのだ。以下、時系列で書く。

エラー1

ModuleNotFoundError: No module named 'keras'
 対処:ターミナルで「pip install keras」を実行

エラー2

ModuleNotFoundError: No module named 'tensorflow'
 対処:ターミナルで「pip install keras」を実行

エラー3

FutureWarning: Conversion of the second argument of issubdtype from `float` to `np.floating` is deprecated. In future, it will be treated as `np.float64 == np.dtype(float).type`.
from ._conv import register_converters as _register_converters

 対処:hp5yのバージョンをあげた。ターミナルで「pip install h5py==2.8.0rc1」
 (変更前h5py 2.7.1 /numpy 1.14.3)
  参考
  Chainer, Tensorflowライブラリインポート時のnumpy FutureWarningを解決する

エラー4

Using TensorFlow backend.
Illegal instruction: 4

 対処:わからん。

環境を再構築

 なんかいろいろ面倒になったので環境を再構築した。まずはanacondaのpython3のやつをダウンロードした。
www.anaconda.com

 あとはkerasとtensorflowを個別にダウンロードしたがまだruntimeWarningというのが生じる。調べてみると以下のサイトに解決策があった。
Ubuntu@macOS上にTensorFlowを導入してみた

 OSによって最適なtensorflowのバージョンがあるらしい。
GitHub - lakshayg/tensorflow-build: TensorFlow binaries supporting AVX, FMA, SSE
 それがここに書かれていた。私の場合はMacOSのhigh SierraなのでTF(tensorflow)の1.5を入れればいいらしい。なるほど!そういうわけで「tensorflow == 1.5.0」をやったらruntimeWarningは消えた。

 あとは「_pickle.UnpicklingError: pickle data was truncated」というエラーが出ていた。調べたら、ちょうど昨日外国の人が質問していた。
Python 3 keras: UnpicklingError: pickle data was truncated for partly downloaded keras cifar10 dataset - Stack Overflow

 回答者曰く、.kerasフォルダの中にすでに入ってるデータセットを消去するといいらしい。試しに消してみたらなんとうまく動いた。

f:id:kyokucho1989:20180927053057p:plain


 うぉっっっぉおおおおおおおおおおおおおおおおおおおおおおおおおおおお!!!!!


やったー。
まだ、描画しただけだけど。


 

ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装

ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装