(チュートリアルのunclarity)Kerasに深いオートエンコーダからの符号化データをデコードする方法: https://blog.keras.io/building-autoencoders-in-keras.htmlは、私はチュートリアル「Kerasでビルオートエンコーダを」従っている
まず、簡単な、解決策が正常に動作します。しかし、「Deep autoencoder」のセクションでは、チュートリアルで提供されているコードは完全に機能していないようです。ここで
はちょうどturorialからコピーされた私のコード(問題が表示される場所だけになるまで)、次のとおりです。
from keras.layers import Input, Dense
from keras.models import Model
encoding_dim = 32
input_img = Input(shape=(784,))
encoded = Dense(128, activation='relu')(input_img)
encoded = Dense(64, activation='relu')(encoded)
encoded = Dense(32, activation='relu')(encoded) # Multiple encoding
decoded = Dense(64, activation='relu')(encoded) # and decoding layers.
decoded = Dense(128, activation='relu')(decoded)
decoded = Dense(784, activation='sigmoid')(decoded)
autoencoder = Model(input_img, decoded)
encoder = Model(input_img, encoded)
encoded_input = Input(shape=(encoding_dim,))
decoder_layer = autoencoder.layers[-1]
decoder = Model(encoded_input, decoder_layer(encoded_input)) # Crash happens here.
私はこのエラーを取得する:
Traceback (most recent call last):
File "keras_test.py", line 20, in <module>
decoder = Model(encoded_input, decoder_layer(encoded_input)) # Crash happens here
File "/Users/paulmagnus/Library/Enthought/Canopy/edm/envs/User/lib/python2.7/site-packages/keras/engine/topology.py", line 569, in __call__
self.assert_input_compatibility(inputs)
File "/Users/paulmagnus/Library/Enthought/Canopy/edm/envs/User/lib/python2.7/site-packages/keras/engine/topology.py", line 479, in assert_input_compatibility
' but got shape ' + str(x_shape))
ValueError: Input 0 is incompatible with layer dense_6: expected axis -1 of input shape to have value 128 but got shape (None, 32)
私はdecoder
であると推測しています誤った復号化レイヤに接続されている、および/またはその入力または出力の形状が間違っていることがある。しかし、私はそれについて何をすべきですか?
decoder
は、autoencoder
には必要ありません。チュートリアルの残りの部分で学習を行い、画像をエンコードすることができます。しかし、decoder
がなければ、イメージを元の形式に戻して、実際に見栄えが良いかどうかを確認することはできません。このチュートリアルでは何も言及しておらず、解読された画像を単語なしで示しています。私は作者がこれを達成するために彼が何をしたのかと思ったのですが、これを実現するには些細なことでした。
明確にする:単層のバージョンが正常に動作します。ここで、代わりに3エンコードとデコード3層から私達はちょうど
encoded = Dense(32, activation='relu')(input_img)
decoded = Dense(784, activation='sigmoid')(encoded)
を持っており、他のすべてが上記のように同じです。その後、エラーは発生せず、decoder
を使用してイメージを再作成できます。最後の層は、この行が最後の層を要求する。この場合にデコーダと
decoder_layer = autoencoder.layers[-1]
あるため
こんにちはPaulMag;あなたの質問はコード関連で、Kerasモデルの設定をデバッグすることだと思います。統計や深い学習のテクニックではありません。そうであれば、CrossOverflowではなく、StackOverflowの「ミッション」に局所的に関連しています。 – fnl
@fnlはい、あなたは正しいです。私はこれを求めるプラットフォームが不明であった。私はStackOverflowでそれを再投稿し、CrossValidatedから削除する必要がありますか? – PaulMag
私は、移行が問題だと考えました。私はStackOverflowへの移行のためにこの質問にフラグを立てました。 – PaulMag