Hatena::ブログ(Diary)

Set the controls for the heart of the sun

 

2018-04-03

Windows Laptop 環境構築(memo

11:41

Anacondaいれる。Ubuntu on Windowsを入れる。Officeいれる。Acrobat Reader DC, Tera Term(?), Visual Studio Professional(20xx?), firefox, chorme, sakura edita

2017-12-26

ラズベリーパイ 固定IP設定(wheezy)

14:57

/etc/network/interfacesを編集。dhcpをstaticに変え、IPアドレス・ネットマスク・ゲートウェイを指定。設定の反映のさせ方がようわからなんのでreboot。これでおk

auto lo
iface lo inet loopback
# iface eth0 inet dhcp
iface eth0 inet static

address 192.168.x.100
netmask 255.255.255.0
gateway 192.168.x.1

ラズベリーパイ バージョン

14:28

 $ cat /etc/debian_version

ラズベリーパイDebianベースのLinux。設定方法がバージョンごとに異なるので、ベースとなったDebianのバージョンを確認しつつググる

Raspbian: https://en.wikipedia.org/wiki/Raspbian

Debian (verision):https://ja.wikipedia.org/wiki/Debian

ラズベリーパイ SSH

14:10

いちいちディスプレイに接続するのがめんどくさいのSSH通信できるようにする。

$ sudo apt-get install ssh

LAN内でつなぐだけだし、別段なんの設定もしない。

ラズベリーパイ Webサーバ化

14:03

Apache2をいれる。

$ sudo apt-get install apache2

websiteのデータはデフォルトで/var/www/に保存。CGIのデータは/usr/lib/cgi-bin/に保存。設定ファイルは/etc/apache2/apache2.conf。ひとまず、ラズパイIPアドレスウェブブラウザでたたく。デフォルトページが表示されればおk。

ラズパイを買って、自分の研究メモ用WikiなりBlogを作ると有用。紙のメモ帳は検索できないからめんどくさい。僕らは情報系だぜ?昔SaHKaが研究メモ用の掲示板だかwikiだかを自分の鯖に立ててた気がする(そしてある日鯖がお亡くなりになったと聞いた)。

ラズベリーパイ 日本語化

13:49

渡されたラズパイCUIの表示が日本語らしく文字化けして何も読めぬ。英語でいいのに・・・。仕方なく日本語化。

日本語表示のための「jfbterm(日本語化フレームバッファターミナル)」と日本語入力のための「uim-anthy(日本語入力メソッド)」をインストール

sudo apt-get install jfbterm uim uim-anthy

emacsviで/usr/share/uim/generic-key-custom.scmを編集。44〜50行目付近の「Shift」を「Control」に変更(Ctr+Shiftで切り替え)。最後に.bashrcに以下を追加して再起動

RUNTTY=`/usr/bin/tty | cut -c 6-8`

if [ $RUNTTY='tty']
then
   jfbterm -q -e uim-fep -u anthy
fi

2017-12-14

livsvm, linlinear

16:19

memorandom

svm-train.exe -t 0 -c hoge -v 5 hoge.svm # hoge=the number of cross validation

2017-12-07

video-caffe

14:23

makeする際、cuda-8.0を指定すると下記エラー。Makefile.config見ても特に変更すべき箇所がない。

fatal error: cudnn.h: No such file or directory

仕方なく、Makefile.configのCUDAのパスをcuda-7.0にしてmake all -j8。するとビルドできた・・・。Caffeはcuda-7.0対応だからまあいいとしてcuDNNのバージョンはどうなっとるのか?

cuDNNのバージョンについてはvideo-caffeは4と5までは動作するとか配布元が明言しているものの、cuDNNがver5のときはエラー吐いて止まることもあるとフォーラムに書いてある・・・。学習時の最初の一回目でエラーが起きなければそのあと問題がないのだけれど・・・ちゃんと計算できているのか不安すぎる。cuDNN4だとエラーが起きないらしい。今度ビルドしようと思っているマシンのcuda-7.0以下で

/usr/local/cuda-7.0/include/cudnn.h

の中のMajorの部分がcuDNNの利用バージョンらしい。みたら4となっていたので今度のマシンは、いちおう大丈夫そう。

たまにエラー吐く現在のマシンのバージョンを確認したところcuda8のcuDNN5だった。オフィシャルで動作確認されてないやつやん・・・。というか、現在のマシンのMakefile.configを流用して新しいマシンでのmake失敗しているが、片方はcuda8なのにビルドできるっていったいどゆこと??? と思ったら新しいマシンの

/usr/local/cuda/include/
/usr/local/cuda-8.0/include/

のどちらにもにcudnn.hがなかった。インストールしてないのかよ・・・(初期セットアップは別の人orz)。

ひとまず、新しいマシンの方で現行マシンとおなじ計算して様子を見てみないことには何とも言えない。もーcafeやめようよーkerasにしようよーめんどくせーし信用できねーよー(平野耕太風)。


で、新しいマシンで実行したら以下のエラー。

error while loading shared libraries: libcudart.so.7.0: cannot open shared object file: No such file or directory make: 

というわけでパスを通す。パスが通っているのは/usr/local/cuda/ だけだった。バージョン管理どうなってんだろうこのマシン・・・。

export LD_LIBRARY_PATH=/usr/local/cuda-7.0/lib64:$LD_LIBRARY_PATH
export PATH=/usr/local/cuda-7.0/bin:$PATH

2017-12-06

NumpyとScipyのlinalg

16:18

Norm

https://docs.scipy.org/doc/numpy-1.13.0/reference/generated/numpy.linalg.norm.html

https://docs.scipy.org/doc/scipy-0.19.0/reference/generated/scipy.linalg.norm.html

固有値分解やら特異値分解の場合と違って、たいして違いはないのかな・・・と思ったらscipyの方が行列に対するノルムが減ってる。どうも核ノルムが外されているようだ。

2017-12-03

ぜっつぼーう ぜっつぼーう ぜっつっぼっ

02:27

もっと絶望と仲良くなろうよ、というユウのセリフがなかなか印象に残った。原作が終わりそうな感じで、テッケンクラートもあんな感じでなんかな。

研究室の3Dプリンタで印刷したいなぁ、という話を院生たちと話したら、できないこともなさそう。figmaは1/12のシリーズ展開だから、いろいろ載せられる。https://www.thingiverse.com/thing:2635032

2017-10-14

Pythonでループを使わない計算にする(高速化)

00:40

ループを使わないようにすると、大分まともに実験ができるようになるようだ。以下の関数を組みわせるとforループを使わずに済む。Matlabかよ。

#A: 行列 (MxN)
#b: 列ベクトル (Mx1)

C=A*A #行列の要素同士の積(アダマール積)→C
D=A*b  #行列の各列の要素とベクトルの積 →D

e = numpy.sum(Mat_hoge,axis=0) #行列の各列の行方向の和
f = numpy.sum(Mat_hoge,axis=1) #行列の各行の列方向の和

# e は1次元のndarray
g = numpy.c_[e] # 1次元ndarrayを2次元ndarray、列ベクトルに
h = numpy.r_[e] # 1次元ndarrayを2次元ndarray、行ベクトル

例えば、以下のように

#A: 行列 (MxN)
#b:列ベクトル(Mx1)

c = numpy.zeros( (N,1) )
for j in range(N):
   for k in range(M):
      c[j] += A[k,j]*b[k]

c = numpy.c_[numpy.sum(A*b, axis=0)]

と1行で書ける。こっちの方が断然速い。

この書き方を応用してみたところ、22秒かかった計算が0.03秒になった。forループを内包表現した方がよいとか書いているけど、そもそもforループにしない方がよいみたい。

ここまでやってきて、何とか評価実験一歩手前まで来た。結構な時間を使ったが、新しい言語で実験環境構築したし、これくらいかかってもしょうもないか。