2017-12-25 9 views
0

https://blog.keras.io/building-autoencoders-in-keras.htmlKeras:LSTM Seq2Seqオートエンコーダ入力incompabilityエラー私はここにSeq2Seqの例を実行しようとしている

from keras.layers import Input, LSTM, RepeatVector 
from keras.models import Model 

inputs = Input(shape=(timesteps, input_dim)) 
encoded = LSTM(latent_dim)(inputs) 

decoded = RepeatVector(timesteps)(encoded) 
decoded = LSTM(input_dim, return_sequences=True)(decoded) 

sequence_autoencoder = Model(inputs, decoded) 
encoder = Model(inputs, encoded) 

マイ入力されているカテゴリエンコーディング、例えば

MInput = Input(shape=(MAX_LEN, CATEGORY_NUMS)) 
    encode_seq = LSTM(32)(MInput) 

    decode_seq = RepeatVector(MAX_LEN)(encode_seq) 
    decode_seq = LSTM(CATEGORY_NUMS, return_sequences=True)(decode_seq) 

    autoencoder = Model(MInput, decode_seq) 
    encoder = Model(MInput, encode_seq) 

:だから25のカテゴリおよび1000

の固定長さを有する、[1、23、6、12、4、0、0、0]、コードの更新バージョンは、のように見えますしかし、私は "入力0は層lstm_2と互換性がありません:予期したndim = 3、ndim = 2を見つけました"というエラーが出ます。

return_sequences =を最初のLSTMレイヤーに追加するか、RepeatVectorを削除すると、すべて互換性エラーが発生します。

私は自分の入力をどのように準備する必要があるのか​​分かりません。

ありがとうございます!

+0

入力の形状は(batch_size、timesteps、input_dim)にする必要があります。形状は正しいですか? MAX_LENタイムステップを意味しましたか? – Ajjo

+0

私の入力シェイプは、最大シーケンス長(MAX_LEN)とディクショナリ(CATEGORY_NUMS)のユニーク文字の数です。私はタイムステップとしてMAX_LENを使うことができると思ったが、バッチサイズへの参照はなかった? –

答えて

0

あなたの入力Xと出力Yは、形状(batch_size、timesteps、input_dim)でなければなりません。形状を印刷し、モデルの要約出力形状と比較してみてください。

関連する問題