KerasでAutoEncoder

前回に引き続き、KerasでAutoEncoderを書いてみました。

KerasでAutoEncoder

AutoEncoderのモデルは下記で定義してあります。ほぼほぼ全結合の時と一緒ですね。

で、実際に前半のEncoderの部分を使う場合はinputからencoderの部分をモデルとして宣言する必要があります。
この時は上のモデルでトレーニング済みなので特にfitみたいなことしなくて大丈夫です。

Denoising AutoEncoderも作りました。ノイズの作成方法としては、元画像に正規分布からとってきた乱数を加えてます。
np.clipで上限下限を定めて0~1の範囲に収まるように調整しています。

後はノイズ付き画像が入力、元画像が出力となるように調整すればOKです。

KerasでDeep Learning

最近オススメのDeepLearningライブラリKeras。TheanoかTensorflowをバックエンドにして動きます。ProgressBarによる実行状況の確認や入出力レイヤーのバイアスの枠組みとか自動で行ったり、非常に使いやすいです。

Kerasで全結合層
ここに簡単なコードを上げました。
実質10行くらいで書けます。超便利。

ここのInputで入力、Denseで各層を定義しています。引数で前の層を入れておけばOK
これだけで前後の層を勝手につないで重みとかもスケールしてくれるので大変ありがたいです。

ちなみに同じようなやり方で以下のような書き方もできます。

Sequential()定義をすると、層をaddという形でどんどん追加できます。こちらも分かりやすいですね。
ただ、この形だと単純な構造なら良いのですが層の間に色々挟んだりAutoEncoderみたいに学習器を切り離す場合とかは不便です。

巷ではChainerが流行っているみたいですが、こっちの方が楽だと思うんですよね。海外でディープラーニングベンチャー立ち上げた人も時代はKerasって言ってましたし、サポートも充実(?)しており、自動翻訳突っ込んだような日本語ドキュメントもあります笑

今からDeep Learningを始める人はKerasにしてはいかがでしょう?

参考文献

ttp://aidiary.hatenablog.com/entry/20160328/1459174455
ttp://keras.io/
ttp://rnn.classcat.com/2016/03/15/keras-deep-learning-library-for-tensorflow/