LoginSignup
3
4

More than 5 years have passed since last update.

Chainerで畳み込みニューラルネットワークを試す際の注意点

Last updated at Posted at 2016-12-06

Chainerを使って畳込みニューラルネットワークを勉強したいと思った時に,「理論はまだわかっていないけどサンプル的なものを動かしてみたい!」
と思うことがあると思われる.

そんな時,このお二方の記事にたどり着くと思います.

PFN発のディープラーニングフレームワークchainerで画像分類をするよ(chainerでニューラルネット1)
http://hi-king.hatenablog.com/entry/2015/06/11/021144

ChainerのNINで自分の画像セットを深層学習させて認識させる
http://d.hatena.ne.jp/shi3z/20150709/1436397615

その際,これらの記事通りにやると引っかかるであろう点を挙げておきます.

ちなみに,GPUを使わず,CPUで試そうとした場合です.

cPickle.UnpicklingError: invalid load key

こちらの記事のとおりです.

mean.npyを非Pickle化して読み込む際にエラーが起きてしまうので,NumPy配列として読み込むようにしてあげれば通ります.

train_imagenet.py
# Prepare dataset
train_list = load_image_list(args.train)
val_list = load_image_list(args.val)
# mean_image = pickle.load(open(args.mean, 'rb'))
mean_image = np.load(args.mean)

しかし,エラーの具体的な原因がわかっていないので要調査です.

remove_split=False is not supported anymore

chainer1.18.0以前のことはわかっていませんが,1.18.0現在では,DotNodeクラスのbuild_computational_graphメソッドの第二引数でremove_splitが常にtrueでなければいけなくなりました.

変更前

train_imagenet.py
with open('graph.dot', 'w') as o:
     o.write(c.build_computational_graph((loss,), False).dump())

変更後

train_imagenet.py
with open('graph.dot', 'w') as o:
     o.write(c.build_computational_graph((loss,)).dump())

デフォルトがtrueなので,282行目のbuild_computational_graphの第二引数を削除しました.

応急処置ですが,これで動きます.
メモ書きとして.

参考

PFN発のディープラーニングフレームワークchainerで画像分類をするよ(chainerでニューラルネット1)
http://hi-king.hatenablog.com/entry/2015/06/11/021144

ChainerのNINで自分の画像セットを深層学習させて認識させる
http://d.hatena.ne.jp/shi3z/20150709/1436397615

Source code for chainer.computational_graph
http://docs.chainer.org/en/stable/_modules/chainer/computational_graph.html

ChainerでcPickle.UnpicklingError
http://qiita.com/shota_hayashi/items/4a488931ab88f45cfa55

3
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
4