したらばTOP ■掲示板に戻る■ 全部 1-100 最新50 | |

CS231n: Convolutional Neural Networks for Visual Recognition

1karino2:2017/05/12(金) 21:11:59
http://cs231n.stanford.edu/

スタンフォードのCNNで画像認識のコースのOCW。
自分でいじりたくなったので簡単に触れそうな奴をやってみよう、という事で。

2karino2:2017/05/12(金) 21:19:40
とりあえず金に糸目はつけない、という事でGoogle Compute Engine使っていくかなぁ。
コースとしては$100のquotaとなっているので、その位には収まるのだろう。

3karino2:2017/05/12(金) 22:14:17
ふんふんふん、とgceのチュートリアルをやっていったが、

http://cs231n.github.io/gce-tutorial/

Jupyterへのアクセスをする段階になって、ポート指定して全アクセス許す、となっている。
これはさすがにまずいんじゃないか?
基本的にはチュートリアル通りに余計な事をしないように進めたいのだが、MS時代にIPが秘密でも勝手に探られてアタックされるから絶対こういうのはやっちゃいかん、と散々教育を受けたからなぁ。

とりあえずポートフォワードする方向でやってみるか。

4karino2:2017/05/12(金) 22:24:30
ポートフォワード越しにJupyter Notebookにつなげる手順。
チュートリアルと以下の部分だけ変える。

1. gcloudコマンドに--でsshのオプションを渡す。
gcloud compute ssh --zone=us-west1-b instance-1 -- -L 51234:localhost:51234

2. チュートリアルでjupyter_notebook_config.pyを編集する所で、
c.NotebookApp.ip = 'localhost'
c.NotebookApp.open_browser = False
c.NotebookApp.port = 51234

とする。

3. jupter-notebookを立ち上げて、gcloud実行しているマシンからはブラウザでhttp://localhost:51234 にアクセス。

5karino2:2017/05/12(金) 22:42:05
とりあえずeditbookも入れて、ポートフォワードでアクセス出来る事も確認。
これでチュートリアルは終わりかな。

今日の所はこれくらいにしておいてやろう。

6karino2:2017/05/13(土) 15:36:08
さて、イントロダクションとしてNearest Neighbor Classifierのあたりを読んでいて、実際に試そうと思ったが手順が良く分からん。
このCIFAR-10のデータとかは自分で持ってこないとダメなのかしら?

お、assignments1に持ってくる方法が書いてあるな。
http://cs231n.github.io/assignments2017/assignment1/

7karino2:2017/05/13(土) 16:27:47
Nearest Neighborを実行したら帰ってこない。
そりゃそうか。これ各画像ごとに5万画像とのマッチングをしている訳だろうからな。
1万x5万画像。まぁ終わらんか。

8karino2:2017/05/13(土) 16:51:46
あまりにも終わらないのでトレーニングセット5000、テストセット1000でやってみたが、これでも終わらない。
元の多すぎじゃね?

で終わった結果>0.288
だいたいあってるかな。

9karino2:2017/05/13(土) 16:53:46
何はともあれ、GCE+Pythonでの初めての画像識別タスクが終わったヽ(´ー`)ノ
セットアップとかなんだかんだで実際にやるまでいろいろあるから、ここまでやるのも立派な成果だす。
といってもコースのスクリプトが良く出来ているのでそれほどの労力でも無いが。

でも実際に手を動かすって大切だよね。

10karino2:2017/05/13(土) 17:41:59
せっかくだからkNNの課題を解く。
まずはtwo-loopとone-loopを書いてみる。no-loopは後回し。

次はpredict_labelsだが、ここはいかにもPythonのイディオムっぽいよなぁ、という事でクックブックでも見直す事にする。

11karino2:2017/05/13(土) 21:23:46
no loopのケースをしばらく考えたが分からなかった。
ナイーブに
データ次元 x test_num x train_num
のようなサイズの配列が出来るようなブロードキャストはMemory Errorが出てしまう。

結構考えたけど分からなかったのでギブアップ。

12karino2:2017/05/14(日) 13:29:13
さて、k Nearest Neighborまではまぁまぁ真面目にやったが、この後はどうしたもんか。
SVMやgradient decentは適当で良い気もするが。

とりあえずざっと眺めてみて、どこまで真面目にやるか考えよう。

13karino2:2017/05/14(日) 14:38:23
SVMは説明だけは読んでおく。手は動かさないで良かろう。
次はsoftmax。

14karino2:2017/05/14(日) 15:21:44
メモを書く。

https://gist.github.com/karino2/675967d4fef5ed88f6b4b4da99815f97

15karino2:2017/05/14(日) 15:29:24
softmaxを確率として対数尤度を最大化しているとみなすと正規化項はMAP推定で事前分布をガウス分布とみなした時のパラメータと解釈できる、という話。
PRMLでやったね。
こういう話がさらっと載っているのは復習に良い。

16karino2:2017/05/14(日) 15:49:46
SVMとsoftmax、一応ざっと読み終わり。結局だいたい全部読んでしまった。
復習には割と手頃。

次はstochastic gradient descent。
これもざっと読むだけで良いかな。

17karino2:2017/05/14(日) 20:48:37
stochastic gradient descent読み終わり。良く書けているなぁ。

gradient descentは軽く実装も見ておきたいが、今はGCEのインスタンス立ち上げてないのだよな。
後で他の件で必要になった時についでに見るでいいか。

18karino2:2017/05/14(日) 23:20:21
backprop読み終わり。
計算グラフは使った事無かったので、読んでおいて良かった。

19karino2:2017/05/15(月) 19:43:50
NNの一つ目はざっと見た。
で、二つ目のsetting upのlecture noteを読んでいる。
これがなかなか良くまとまっている。

Batch Normalizationとかdropoutのような最近のDeep NNなテクニックが一通り網羅されてて、良いまとめ。

20karino2:2017/05/16(火) 01:18:00
learningの所は最近の研究が良くまとまってて素晴らしい。
Nestesv MomentumとかAdamとか良く名前は見るが元論文読んでなかった物がちゃんと説明されてて、これまで分かってなかった事が全部潰せた感じがある。
これは良い教材だなぁ。

21karino2:2017/05/16(火) 07:57:41
putting it togetherでのsoftmaxのLの微分の計算が省略されてたのでやっておく。

https://imgur.com/8Z7GSxP.jpg

22karino2:2017/05/16(火) 08:23:26
dWの導出。

https://imgur.com/sTrU98J.jpg
https://imgur.com/nEjOP4n.jpg


新着レスの表示


名前: E-mail(省略可)

※書き込む際の注意事項はこちら

※画像アップローダーはこちら

(画像を表示できるのは「画像リンクのサムネイル表示」がオンの掲示板に限ります)

掲示板管理者へ連絡 無料レンタル掲示板