ウォンツテック

そでやまのーと

TensorFlowを使ってみる 5

Kerasを使ってみる

tensorflowの高機能ライブラリであるcontrib.learnを使ってみたんですが
今一わかりづらかったのでもう一つの高機能ライブラリであるKerasをさわってみます

とりあえず1層でOptimizerは最降下勾配方で最も単純なネットワークを組んでみます

gist.github.com

contrib.learnと比べて層で何をやっているかが非常に明快です。
ただし、結果としてはaccuracyが0.86くらいと前回素のtensorflowで組んだ場合の0.97と比べるとかなり低いです。

と思って調べてみたら、lrの値、learning rateという1回の微分でどの程度重みを移動させるかの値が0.01とかなり低い値を指定してしまっていました。

素のtensorflowで組んだ場合と同じ値の0.5にしたらaccuracyは0.956と精度は近づいてます。

後、精度を出すのに重要なハイパーパラメータである重みの初期値を以下のように合わせてみたんですが、精度は逆に落ちて0.952くらいとなってしまいました。

std_deviation = 0.01

def my_init(shape, name=None):
    print(shape)
    value = std_deviation * np.random.randn(*shape)
    return K.variable(value, name=name)

model.add(Dense(output_dim=100, input_dim=784, init=my_init))

Keras使ってみる 2

Kerasで畳み込みニューラルネットワークを書いてみました

gist.github.com

やはりcontrib learnより何をやっているか分かり易く、Try&Errorが容易に出来そうな気がします

結果はaccuracyが0.991となりました。