オートエンコーダーを構築する
オートエンコーダーには、異常検知や画像のノイズ除去など、いくつかの興味深い応用があります。目的は、入力と同一の出力を生成することです。入力はより低次元の空間に圧縮(エンコード)され、モデルはそれを元の形にデコードする方法を学習します。
ここでは手書き数字の MNIST データセットをエンコードしてデコードします。隠れ層は、もともと784ピクセル(28 x 28)からなる画像を32次元の表現にエンコードします。オートエンコーダーは、784ピクセルの元画像を32ピクセル相当の圧縮表現に変換し、そのエンコード表現を使って元の784ピクセル画像を復元する方法を学習します。
Sequential モデルと Dense レイヤーは用意されています。
それでは、オートエンコーダーを作りましょう!
この演習はコースの一部です
Kerasで学ぶIntroduction to Deep Learning
演習の手順
Sequentialモデルを作成します。- エンコード後の画像の次元数と同じ数のニューロンを持つ全結合層を追加し、
input_shapeには元の画像のピクセル数を指定します。 - 入力画像のピクセル数と同じ数のニューロンを持つ最終層を追加します。
- 最後に、
autoencoderをオプティマイザにadadelta、損失にbinary_crossentropyを指定してコンパイルし、サマリーを表示します。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
# Start with a sequential model
autoencoder = ____
# Add a dense layer with input the original image pixels and neurons the encoded representation
autoencoder.add(____(____, input_shape=(____, ), activation="relu"))
# Add an output layer with as many neurons as the orginal image pixels
autoencoder.add(____(____, activation = "sigmoid"))
# Compile your model with adadelta
autoencoder.compile(optimizer = ____, loss = ____)
# Summarize your model structure
____