2017-01-01から1年間の記事一覧
最低限のインストール $ sudo apt-get install emacs g++ gcc make cmake sbcl gauche python3-pip CtrlとCapLockのスワップ caps-ctrlのスワップはgnome-tweak-toolでやれる。 $ sudo apt-get install gnome-tweak-tool 日本語環境 Ubuntuでは一時fcitxにな…
覚えておく点 matplotlibの使い方をすぐ忘れる(特に、subplot)。この書き方にこだわる必要は無いけれど、要点だけまとめておく。 手順としては、figureを作る(大きなキャンバスを定義)、figureに対してadd_subplotでサブキャンバスを作る。これはaxesって言…
勾配情報を取得したり、特定のレイヤの出力を得たい場合など、色々な場面でKerasプログラムの中でTensorflowレイヤの操作をしたいことが出てくる。そんな時に使うのがバックエンド。 多くはドキュメント見れば良いが、良く分からないAPI(functionとか)もある…
メモ モデルのcompile時に与えるmetricsは、学習の各エポック毎に計算する学習の指標を表すもの。損失関数は何もやらなくても計算しているので、損失関数以外を指定する。自分で関数を作っても良いが、大概は用意されている。良くあるサンプルではaccuracyが…
kerasのドキュメントのFAQに書かれているので、それ通りにやれば良い。一応、良くあるボストンの家の価格のデータの例を記載。 そう言えば、kerasが終了時にsessionのdelに失敗する場合がある。ちゃんと、backendのclear_session()を呼ぶ。 import numpy imp…
KerasはTensorflow/Theanoを使って良くあるDeep Learningアルゴリズムのパタンを効率的に実装するライブラリだけど、機械学習と言えばデータ前処理やCross-Validation,パラメタ探索とか他にも共通してやることがたくさんある。そんな機械学習共通のライブラ…
PythonでもRubyみたいなメタプログラミング(method_missing, sendとか)が色々出来るみたい。 ちょっとずつ調べて書いていく。 モンキーパッチ(オープンクラスとは違う) 動的にメソッド定義できる(なんと!!)。オープンクラスというよりはクラスのattrに直接…
学習すること ソフトウェアエンジニアは絶えず勉強が必要で(SEに限らずだけれど)、効率的な勉強法が重要となる。 効率よい学習とは、好奇心を持って行動を起こすこと。そして人に教えると知識が補強される。 だから、まず最速で試すポイントまで立つことを意…
前提 Caskの使用をやめたので修正@2018/06/02 最低限として文法チェック、補完、REPLが使えれば良い。 ipython notebook(Jupyter)は使わない。 (notebookはやっぱり慣れないのと、別にmarkdownは別ファイルに書けば良いし、図もEmacs内に埋め込み表示しなく…
使い方 CMakeList.txtにMakefileの生成ルールを記述. CMakeLists.txtを用意したディレクトリを指定してcmakeを実行するとMakefileが生成される.後は通常通りにmakeでコンパイル. ただし,cmakeするとCMakeCache.txtやら色々できてディレクトリが汚れるの…
ひさしぶりに書くとこんな事も忘れてしまっていた.下記のコードでセグメンテーションフォールトが出た. でも,そもそもremove_ifをこんな時には使うようだ. std::list<int> lis {0,1,2,3,4,5,6,7,8,9}; for (auto itr=lis.begin(); itr!=lis.end(); ++itr) { i</int>…
目的 オブジェクトによって振る舞いを変える. 方法 子クラスのポインタを親クラスのポインタに代入するのがミソ.(子クラスは親クラスのポインタに代入可能.逆はだめ.) それを使う側は親クラスのポインタを引数なりにして受け取って,親クラスのメソッド…
基本 型推論 関数テンプレートの場合は型推論されるので,実体化の際に明示的に型を書かなくても良い. クラステンプレートの場合には推論されないので注意. 特殊化 テンプレート関数,テンプレートクラスがある時に特定の型でだけ別の動きをしたい場合には…
簡単でかつ効果が高いのでよく使うサーチ. 意外と境界条件でバグりがち.味噌は,右側を配列の外において置く. #include<iostream> #include<vector> using namespace std; int main() { int d, n; cin >> d; cin >> n; vector<int> v(n); for (int i=0; i<n; ++i) cin>>v[i]; int l=0, r=v.siz</n;></int></vector></iostream>…
番兵アルゴリズムはただの書き方の問題だと思ってたけど,高速化のテクニックだった,という話. forでvectorの要素を回す時に,毎回比較演算が行われるけど,それが勿体無いという場合に,絶対に止まるよに番兵を置いておいて無限ループで回すというのが番…
プロコンをかじってみたら,標準入出力で躓いた...ということで,使い方を整理しておく. scanf 空白文字または改行文字を区切りとして,フォーマットに従って変換して変数に取り込む.2つ以上フォーマット指定子を指定すれば一度にその分だけ読み進む.…