ぱたへね

はてなダイアリーはrustの色分けができないのでこっちに来た

alienware 13にtensorflowを入れようとした時のメモ

NvidiaUbuntu用のドライバは、ソフトウェアとアップデートからインストールできる。

・CUDAをインストールするときに、ドライバのインストールにNoを選択

これだけで1日潰した。ノートPCなので、失敗すると何も画面が映らなくなったり、操作できなくなって辛かった。その時は、Ubuntuのインストールからやり直した。

Tensorflowは、とにかくエラーメッセージで検索するとStackOverflowでいろいろ見つかるので、順番に対応してけばOKだった。

結局、

tensorflow/core/common_runtime/gpu/gpu_device.cc:814] Ignoring gpu device (device: 0, name: GeForce GT 335M, pci bus id: 0000:01:00.0) with Cuda compute capability 1.2. The minimum required Cuda capability is 3.0.

GPUが古すぎるようで動かなかった。新しいGPU付きノートPCがほしい。

 

 

 

 

 

 

 

 

GDG神戸へ行ってきたーーーー

佐藤さんと少し話した件のまとめ。

Deep Learingの学習をするときに、勾配法ではなく全探索法が使えないかというお題

勾配法よりも全検索の方がHW(ハードウェア)向けで良いよと発表しておきながら、そこはあまり考えたことが無かった。まず、勾配法のHW化については多分上手く行かない。勾配法が汎用的なアルゴリズムであり、以前そういう物が無いか調べてみたが良いのが見つからなかった。誰でも思いつくことだから、そのままHW化しても上手く動かないのだと思う。

動き検出以外での全探索法は上手く行く可能性が高い。動き検出には、ピクセルという非常に直感的で分かりやすい1の単位があったが、Deep Leaningでは何を1に持ってくるかが良く分からないし、正解は無いと思うのでこのへんでいいやってポイントを探さないといけない。動き検出と同レベルで高速化をやるとしたら僕の知識だともう大きくひねらないと駄目だ。動き検出の登場人物は、2つの画像と動きベクトル。画像を扱うDeep Learningの場合は、1つの画像と、NNのWeight(学習結果)、出力層の出力の3つ。

動き検出 Deep Leaning
入力画像 1 既知 既知
動きベクトル/Weight 知りたい 知りたい
入力画像2/出力 既知 既知

やりたいことは合っているが、動きベクトルとNNのWeightは次元数が違う。動きベクトルは2次元(x, y)なので探索範囲を全部振るのは現実的だが、NNのWightはNNを構成するユニットの数だけ振るのは組合せが爆発する。組合せ爆発をHWでやってしまうのか、別の手を考えた方が良いのか、そこを考えるのは楽しそうだ。

http://qiita.com/t_Signull/items/f776aecb4909b7c5c116
ここに書いてあるようにどこかを0と1に制限できるとHW実装と相性が良く、確率に関しても同じように2値(0, 1)、4値くらい(00,01,10,11)にまで落とせるとうれしい。

ゆっくり取り組む時間が欲しい。

Lisp in Small Pieces Exercise 1.5 boolean

(defprimitive < < 2)

今の実装だと、<が素のschemeの#t, #f を返すので、俺実装系のTrue、Falseを返すようにしなさい。
俺実装系では真偽値として#t, #fではなくt, fを使うようにすると、こう書けます。

(definitial t #t)
(definitial f #f)

(defprimitive >  (lambda (x y) (if (> x y) 't 'f))  2)
(defprimitive <  (lambda (x y) (if (< x y) 't 'f))  2)

あとはevaluateの中に手を入れる必要があるのですが、戻り値のt、fを一回lookupしたら#t, #fになるので、やっつけ実装ですがこうしたら動きました。

          [(if) (if (lookup (evaluate (cadr e) env) env)