Theano 事始め
概要
- Theano をインストールしてみる。
- 簡単な数式処理を試してみる。
- 微分計算を試してみる。
Theano って??
- Theanoの公式ページ
- Python のライブラリ
- 数式定義、評価、多次元配列計算等々、色々できる。
- 最近流行りの「Deep Learning」のためにも使われている!!
- ( 公式の Welcome ページに色々書いてあるが、数値計算系に凄く強い。)
インストール
- easy_install や pip にてインストールできる。
- 今回は pip を使用。
$ pip install Theano
- 上記、Python 良く使っているマシン上で実行したので…
- 数値計算ライブラリ「scipy」等、Theano に必要なライブラリが無いとエラーが出るかも。
チュートリアル
- 公式からリンク貼ってある、チュートリアルページからいくつか試してみる。
- チュートリアルページ
- Python については、知っているので省略。
- Numpy についても、ある程度やったことあるので省略。
- チュートリアルページ
数式の定義と評価例
- Baby Steps - Algebra → Adding two Scalarsより
- 実数 ( double ) のスカラー ( scalar )値 x, y を定義
- z = x + y として、function 定義。
- f( 2, 3 ) => z = 2 + 3 = 5
- f( 16.3, 12.1 ) => z = 16.3 + 12.1 = 28.4
import theano.tensor as T from theano import function x = T.dscalar('x') y = T.dscalar('y') z = x + y f = function( [x, y], z ) print f( 2, 3 ) print f( 16.3, 12.1 )
- 実数 ( double ) の配列 ( matrix ) 値 x, y を定義し、上と同様の演算
- ( ただし配列 )
import numpy import theano.tensor as T from theano import function x = T.dmatrix('x') y = T.dmatrix('y') z = x + y f = function( [x, y], z ) print f( [ [1, 2], [3, 4] ], [ [10, 20], [30, 40] ] ) print f( numpy.array( [ [1, 2], [3, 4] ] ), numpy.array( [ [10, 20], [30, 40] ] ) )
- (主な) 型と種別
- 変数型:整数 (integer) 、実数 (float & double)、複素数 (complex)
- 変数種別:スカラー (scalar)、ベクトル (vector)、行列 (matrix)、テンソル (tensor) (3次 & 4次) が定義できるとのこと。
- 4次元テンソルまで使えるので、世の中の大体の数式は Theano 使えるの
では。
-
-
- 個人的には、n次元テンソルまで使えるといいな。( 何に使うかは置いておいて。)
-
微分計算 (勾配)
- Derivatives in Theano → Computing Gradientsより
- y = x^2 を定義し、y を x で微分。
import theano.tensor as T from theano import pp x = T.dscalar('x') y = x ** 2 gy = T.grad( y, x ) print pp(gy) f = function( [x], gy ) print f(4) print f(94.2)
- Jacobian や Hessian も計算できるとのこと。