Chainer 基本1

説明は、Chainer V4.2 を使用しています。

初歩的な使い方を説明しています。

chainerは、バージョンによってコーディングが、若干違いますので注意

深層学習は、入力層(Input)、隠れ層(Hidden)、出力層(Output)で構成されています。

層から層へ値を渡す処理の、重みとバイアスを調整して、結果を得ます。

 

とりあえずchainerのバージョン確認

 

モデルの作成と使い方

以下は、入力層、出力層で説明します。隠れ層はありません。

線形モデルを生成して、出力値を取得するだけのプログラムです。

・モデルの生成は、リニア(線形)で、入力、出力ともに3層で作成

・重み、バイアスを表示していますが、モデル生成時に自動で生成されます。初期値を設定することもできます。

・入力値に、1、2、3を作成しています。入力値は、32ビットの実数で作成します。

また上記はNumPyの配列ですが、GPUを使う場合は、cuda配列、実際にchainerで使用される、Variableで渡すことができます。

・モデルの戻り値は、Variableなので、結果はy.dataになります。

今回結果は、以下が表示されました。(結果はW,bが自動設定なので異なります)

上記のプログラムでは、何の役にも立ちませんので、以下学習させて、重み、バイアスを調整して結果が出せるようにします。

モデルの学習

以下は、入力に1,2,3を入れて、出力に2,3,4を出力するように学習します。

・ オプティマイザの、深層学習で用いられる勾配法は様々あり(SGD, Momentum SGD, AdaGrad, RMSprop, AdaDelta, Adam)などがあります。今回はSGDを使用しています。

・回帰処理(mean_squared_error)をしているので、教師データは32ビット実数にします。(分類処理の場合[softmax_cross_entropy]、intの整数になります)

実行結果

学習されるにつれ、モデルの出力値が2,3,4に近づいていきます。

学習前の重み、バイアスと学習後の重み、バイアスが変化しているのがわかります。

※重み、バイアスを調整して答えを引き出すので、答えの出る重み、バイアスがわかるなら学習させる必要はありません。

 

コメントを残す