TIM Labs

Chainer:超簡単なAutoEncoderを作ってみる(2)

| コメント(0) | トラックバック(0)
前回MyAEというクラスを説明した。
このクラスからオブジェクトを作ると、用意ができる。

# Set data
from sklearn import datasets
iris = datasets.load_iris()
xtrain = iris.data.astype(np.float32)

# Initialize model        
model = MyAE()
optimizer = optimizers.SGD()
optimizer.setup(model)
ここまで用意ができたら、ループを回して延々と学習するだけであり、その処理は今までとほとんど同じである。

# Learn
losslist = []
for j in range(5000):
    x = Variable(xtrain)
    model.cleargrads()             # model.zerograds() 非推奨
    loss = model(x)
    if j%1000 == 999:
        print( "%6d   %10.6f" % (j, loss.data) )
    losslist.append(loss.data)     # 誤差をリストに追加
    loss.backward()
    optimizer.update()
今回は、誤差が徐々に縮まっていくところをグラフ化してみよう。
そのため、modelに学習データを与えて実行(学習)させると、誤差(loss)が帰ってきて、それをリストlossに加えていく。
正確には、loss.dataが誤差である。

これで、誤差がlosslistに溜まっているので、表示し、画像ファイルとしてセーブした。

# 誤差グラフの表示
plt.plot(losslist)
plt.savefig("irisautoencodeloss.png")
plt.show()

irisautoencodeloss.png誤差がどんどん小さくなっているいることが分かる。
つまり、学習が進むと、入力と出力がどんどん一致していっていることが分かる。

さて、次回は、もっと突っ込んで、ネットワークの内部のデータを調べてみよう。


トラックバック(0)

トラックバックURL: http://labs.timedia.co.jp/mt/mt-tb.cgi/573

コメントする

このブログ記事について

このページは、fujiが2017年3月 8日 00:00に書いたブログ記事です。

ひとつ前のブログ記事は「データ解析のための統計モデリング入門 GLMのモデル選択 読書メモ4」です。

次のブログ記事は「データ解析のための統計モデリング入門 GLMのモデル選択 読書メモ5」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。