Theano
Theano
- 数値計算を高速化してくれるライブラリ。
- Online Document “Deep Learning Tutorials” で モデルの実装に用いられている。
- 実行時に Cのコードが生成・コンパイルされる (高速)
- 自動微分できる
Install
pip install theano
インポート
import theano
import theano.tensor as T
シンボル
ベクトルや行列、スカラを表す変数は全てシンボルとして扱う。
定義の基本
- float型のスカラを表す
xというシンボルを定義するx = T.dscalar('x') - int型のスカラを表す
xというシンボルを定義する。x = T.iscalar('x') - ベクトルを定義する
x = T.dvector('x') - 行列を定義する
x = T.dmatrix('x')
式によってシンボルを定義
xというシンボルを用いてyというシンボルを定義する。y = x ** 2 + x + 1
関数
定義
上のようにして定義した y を関数として扱うためには、関数を定義する。
f = theano.function(inputs=[x], outputs=y)
- inputs, outputs はそれぞれ入力、出力に対応するシンボル。
theano.functionを呼び出した時には、 内部で数式に対応するプログラムがコンパイルされる。
利用
上のように定義すると次のように値が計算できる。
f(1)
f(2)
f(3)
引数はスカラでなくても良い(ベクトルでも良い)。
微分
例えば次のように定義した時
x = T.dscalar('x')
y = x ** 2
y の微分は T.grad を使って計算できる。
gy = T.grad(const=y, wrt=x)
cost: 微分したい関数wrt: 微分で用いる変数
gy は式を表すので、 gy を用いた関数を定義して計算する。
g = theano.function(inputs=[x], outputs=gy)
g(1)
g(2)
g(3)