自分のための備忘録的なブログです。

Ubuntu14.04LTS を使って、ディープラーニングの勉強をしています。
記載されているコードは、他の OS には互換性がない可能性があります。


DNN:
マシン性能別 学習速度の比較, TFチュートリアルをmodifyする

python3:
オブジェクト指向プログラミングとは, モジュールとインポート、パスを通す, システムコマンド(os), ファイル・フォルダ名取得, 画像の前処理,

Ubuntu14 の初期設定:
Ubuntu14初期設定, 初期設定-2, cudaなども, 初期設定-3

日記、最近の進捗

 

 このところ、  CNN を使った画像分類の勉強をしていました。

 f:id:pmonty:20170718032024p:plain

 

 Qiita のコードを参考に 2クラス分類を Tensorflow で実装。

 医用画像で 85% の accuracy ・・・せめて 90% 欲しいのに。 Data augmentation や、層を深くするなど試したけど、どれもこれもダメでした。

 なお、Cifar-10 のチュートリアルを参考にしたので、画像は 32 x 32 に圧縮・・・これが良くないかも。解像度高いほうが成績はいいだろうから、落ち着いたら圧縮せずに試してみる。

 

 で、このスランプの時に、知識をつけようと、Python や 画像認識関連、プログラミング一般論の本などを乱読。

 いくつかの本はすごく役に立った。

 紙の本、Kindleなど色々読んだけど、中でもオライリーの e ブック が最高だった。

 

 最近こんなエントリがはてブで人気を博してましたが

www.kotsulog.com

 オライリーの e ブックは、紙の本より安い(同額の本もあり)。

 基本は pdf、epub、mobi などのフォーマットで提供されているが、一部の本は pdf しか提供されていないので注意。

 

 ここ半年でプログラミング関連の本がかなり増えた。プログラミングの本って辞書的に使うことが多いので、持ち運びやすい電子書籍のほうがいい。

 オライリーの e ブックは mobi 形式もあって Kindle などの電子ペーパー端末でも読めるし最高。

 

 さて、そんなこんなで以前からやってみたかった Chainer にも挑戦。

 

 Qiita のコード参考に CNN を作成。違ったタスク(120枚の画像で2クラス分類)で、accuracy 100%, (ベストの値)。

 良かった、過学習かもしれないけど。

 

 こんな感じ。 

f:id:pmonty:20170716023821p:plain

 

 

 

 で、 Tensorflow と Chainer を少し触ってみた感想。

 

1.DNN はデータ入力が大変

 Deep learning のコードはネット上にたっくさんある。 Neural network の作成や deep learning 自体は、私のような初心者でも可能。

 ただ、データを NN に入るように整形して、learning を始めるまでが大変。データの取り回し方法もネット上に多数の記事があるのだけど、自分の作った NN に合うような形で実装しないといけない。

 機械学習を長くやってきたプログラマには簡単かもですが、私には難しかった。

 

2.Chainer 愛憎

 言われている通り、Chainer はコードが書きやすい。tf と比べて楽。

 しかし、最近のアップデートで Chainer 2.0 となり、一部で互換性が失われたですよ。Chainer v1.14 で動くコードが v2.0 で動かなかったりする。困ったものだ。

 GPU の使い方もよくわからない。今は GPU を使えておらず、全部 CPU で処理している。CPU は i3-7100 や i5-7600K を使っているのだけど、遅い、遅い。

 

 この点、 Tensorflow は良い。明示的に 「GPU を使ってください」 と書かなくても、勝手に GPU を使ってくれる。

 ありがたやありがたや。

 CPU only だと数分かかるタスクが、モノの10秒で終わってしまうよ (^^)

 

 Tensorflow もアップデートを繰り返しているけど、互換性が切れたメソッドには、

  「こういうアップデートがありました。このように書いてください」

 ってエラーメッセージを返してくれる。

 Chainer も同じこと、できないのかなぁ。 

 

 

 Deep learning の勉強、歩みはのろいけど、まぁ順調かな。

 

 この先やるべきことはいろいろある。どこからどう手を付けていっていいのか。

 自分に技術力がないことはよく理解した。

 そろそろ専門家の人と共同研究にしたい。

 あいにくそのような知り合いがいないのだけど、どうやって探すものなんだろう。

  (あー、今年の人工知能学会に行っときゃよかった!! PyconJP も行きたかったけど、開催日を知ったのはごく最近。すでに定員いっぱいになっちゃってたし・・・)

 

 他に自然言語処理もやりたいのだけれど、これはさらに難しそう。ホント専門家にお任せしたいな・・・

 

 これを自分の専門にできればそれでいいのだけど、そういうポストあるのか。

 でも機械学習の基礎はないから、そういうポストに潜り込むのも難しそうだし。

 ぐだぐだ。