読者です 読者をやめる 読者になる 読者になる

とてもつらい

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

brewで入れたmysqlがERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)

brewmysql入れてつまずいて辛かった。

mysqlを叩くと

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)

って怒られた。

ちゃんとbrewのlogみたらまずコマンド叩けよって書いてあったからちゃんとbrew読もうな。

バックグラウンドで動いててもいいなら

brew services start mysql

バックグラウンドで動かす必要ないならなんか書いてあったけど忘れたので確認してください。

これで治らなかったら自分の時ときは違う問題なので、各自頑張ってください。

Symfony3.2でのCSS,JSの扱い方について読んだ

作りたいものが出来たので、なんとなくSymfony3.2を選んだ。 今まで、railsで書いてきたのでとりあえず公式読んで、適当にメモって行く。 今回はtwig周り。Symfony特有のとこだけ書く。 最初から入っているテンプレートと同様、テンプレートの中に、javascript block、css blockがあることを想定している。

ディレクト

基本的にBundleの中にそれ用のディレクトリ(Resourceとか)を作ってそれ以下か、web以下に入れておく。

JavaScript,Cssの読み込み

AppBundle/Resource/js以下にあるjsを読み込むには以下のコードでできる。

{% block javascripts %}
    {% javascripts '@AppBundle/Resources/js/*' %}
        <script src="{{ asset_url }}"></script>
    {% endjavascripts %}
{% endblock %}

複数のディレクトリから読み込む場合は、

{% block javascripts %}
    {% javascripts '@AppBundle1/Resources/js/*' 
                   '@AppBundle2/Resources/js/*'%}
        <script src="{{ asset_url }}"></script>
    {% endjavascripts %}
{% endblock %}

でできる。

web以下で管理している場合は、

{% block javascripts %}
    {% javascripts '@AppBundle/Resources/js/*' %}
        <script src="{{ asset("web以下のパス") }}"></script>
    {% endjavascripts %}
{% endblock %}

で読み込める。
CSSの場合も同様に読み込める。

{% block stylesheets %}
    {% stylesheets 'AppBundle/Resources/css/*' filter='cssrewrite' %}
        <link rel="stylesheet" href="{{ asset_url }}" />
    {% endstylesheets %}
{% endblock %}

filter='csswrite'は、書いてあるとcssのパスが変わった時によしなになおしてくれるらしい。
プロジェクト全体でよく使うようなもの(jqueryとかbootstrapとか)を別のとこに保存しておいて読み込みたい場合は、config.ymlに

# app/config/config.yml
assetic:
    assets:
        jquery_and_ui:
            inputs:
                - '@AppBundle/Resources/thirdparty/jquery.js'
                - '@AppBundle/Resources/thirdparty/jquery.ui.js'

と書き、

{% block javascripts %}
    {% javascripts '@jquery_and_ui' %}
        <script src="{{ asset_url }}"></script>
    {% endjavascripts %}
{% endblock %}

で読み込むと便利。
filterについても書いてあったけどよくわからなかったから困ったら読む。

Towards Unifieid Depth and Sematic Prediction from a Signle Image

読んだメモ。

概要

大域的な深度推定と領域分割を行うCNNと、局所的な深度推定するCNNの出力結果と局所的な領域分割を、Hierarchical CRFによって情報を合わせて、 領域分割と深度推定を行う。

実際には、同じ年の同じ学会に出たEigenの論文が圧勝してるので、そんなに読む必要もないと思う。

Global CNN

大域的な深度推定と領域分割を行うCNN。

RGB画像を入力として、領域された画像と深度画像が出力となる。

誤差関数は、論文参照。ネットワーク構造は、EigenのNIPS2014のやつ。

Local CNN

局所的な深度推定をするCNN。

直接深度を求めるのではなく、ラベルごとに正則化された深度画像のテンプレートがあり、最もそれらしいテンプレートを選択するCNNを作る。

誤差関数は、論文参照。

局所的な領域分割は、Global CNNの結果の多数決できめる。 局所的な深度は、テンプレートの中心の深度と、テンプレートのスケールを求めることで決まる。これは、HCRGで決まる。 テンプレートは、データセットから切り取ったものとする。

HCRF

論文の式1を最小化すると局所的な情報と大域的な情報をいい感じに合わせてくれる。 式1に含まれるデータ項には、Global CNNの出力と、式9がそれぞれ入る。 実装するには、他の論文の関数をそのまま使ってるとこがあるので、それを読まないといけない。 解くときは、ラベルか深度のどちらかを固定して、最適化を繰り返す。

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分解とか実際にプログラミングして計算する方法も書いてありますが、だいたいライブラリがあるので読まなかったです。