とてもつらい

プログラミングと本のメモ

3D ShapeNets: Adeep Representation for Volumetric Shapes

研究で読んだので適当にまとめ。

目的

あるオブジェクトの深度画像を入力として、オブジェクトの分類と、オブジェクトの形の推定をConvolutional Deep Belief Network(CDBN)を使って行う。

CDBN

有向グラフを持ったグラフグラフ確率モデルを何層か重ねたもので、RBMを何層か重ねたものを初期値として学習し、その後教師データを使って逆伝播で学習するモデル。

概要

見えてる範囲で、ボクセル表現のオブジェクトを作り、不明な部分をネットワークによって獲得する。わからなかった場合も考えて、次にこの視点があったらいいってのを得ることもできる。

感想

ボクセル表現で3Dの扱うってことが面白そうだったので、アイディアとして使って行きたい。メモリが足りれば。

pythonのPoolを使って並列化するときにメモリを食いつぶした問題

python2系で大きいデータを並列処理しようとした時に、メモリを食いつぶしてしまったので、メモ。 以下のような処理をしたら、Poolで並列化したプロセスが処理が終わったあとも死なずに残りプロセスが増えすぎてメモリを食いつぶしてしまった。

from multiprocessing import Pool

def f(x):
    return x*x

if __name__ == '__main__':
    pool = Pool(processes=4)              
    print pool.map(f, range(100000))  

いろいろ調べた結果以下の記事が参考になった。

http://qiita.com/tnarihi/items/a0dfb43fa989c3c8fc55

原因は、Poolは、処理が全部終わるまで、プロセスが死なず、新しいプロセスを生み続けるようになっていることっぽかった。 これは、Processで書き直すで解決した。 Processを使う場合は、Process一個につき、一つのデータしか処理できないので、ちょっと工夫が必要。 大きいデータの時は、Processで書いて、小さいデータの時は、実装コストを減らすために、Poolでとか使い分けるのがいいのかな。

集合知プログラミングを読んだ

データを扱う知識が欲しくて読みました

集合知プログラミング

集合知プログラミング

章ごとに実際にありそうな問題を設定してそれを、解決していくという感じです。 手法についての詳しい説明などは少なく、問題に対してどんなアルゴリズムを使えばいいかみたいなことがわかるような内容です。

自分としては、名前だけ聞いたことがあるアルゴリズムが多く出てきたので、いろいろ疑問が解消できました。

入門書という感じだったので、データ使ってなんかやりたいなって人におすすめです。 SVMらへんがほとんどかいてなかったので、別の本を読んでこうかと思います。

プログラミングのための線形代数読んだ

数3Cをやったことがなく、とてもつらい思いしたので線形代数を勉強するために読みました。

プログラミングのための線形代数

プログラミングのための線形代数

個人的には教科書で使ってもいいんじゃいないかってくらい線形代数がイメージしやすかったです 内容は、線形代数、行列とは、みたいな話で始まり、逆行列と対角化の意味や、イメージについて話して終わりって感じで、院生とかだとあんまり読んでも意味がないと思います。 LU分解とか実際にプログラミングして計算する方法も書いてありますが、だいたいライブラリがあるので読まなかったです。

spacemacsでtrampが使えない問題

emacsからspacemacsに乗り換えたらtrampが使えなくなりました。 trampでつなごうとするとpasswordなどを聞かれずにsending passwardとメッセージが出てそこで止まってしまう症状が出ました。 対処法は、

(set projectile-mode-line " Projectile")

(set projectile-mode-line nil)

を.spacemacsに書き込むと治ります。

追記:

治ってなかったです。

調べたら僕の場合は、rails layerのバグでspacemacsのissueにも出てました。

rails layer使うのやめるか頑張ってプルリク出してください。

anguraJSを進めた

前回読んだanguraJSの本を読み進めました。 3章はテンプレートの話っぽくて辞書的に使う感じがしたので飛ばして4章のサービスのとこを読みました。

コントローラーを使ってjQueryajaxみたいなことをしようって話しだったんですが、結局jQueryみたいにかけるらしく、基本的にはそっちを使っていこうかなとおもってます。細かい情報のやり取りはanguraにしたがったほうが楽そうです、 一番良さそうな感じがしたのは、ルーティングの話です。anguraはテンプレートを利用して、ページの一部分を変えることができて、ページ内でルーティングができます。サーバー側は、APIだけ用意しちゃって、クライアント側で、ページ遷移などできそうです。これを使うとフロントとバックを分離できるので、すごくいい感じでした。

今のとこ良さそうな感じなので、就活終わったら何かjQueryで書いてるとこをanguraにしようかとおもってます。

anguraJSやるぞい

JSのフレームワークに触ったことがなかったので、anguraJS勉強します。

この本を読んでいこうと思っています。

 

AngularJS アプリケーションプログラミング

AngularJS アプリケーションプログラミング

 

 

一章は、フレームワークはなんぞやみたいな話しで、フレームワークとライブラリの違いや、フレームワークの利点などが書いてあります。

 

二章からangularJSに触れていきます。

angularJSはMVW(Model-View-Whatever)モデルを採用しているみたいです。この本では一応MVCということになっているようです。

内容は、angularJSで作られたサンプルページをみながらMVSモデルでの基本的な使い方を知るって感じです。

 

簡単に触った感じだと、リアルタイムにいろいろ更新するってのが簡単にできそうでそこはすごく便利そうな感じです。実際に大規模なJSを書いたことがないので、なんともいえないですが。