Keras:LSTM Seq2Seq自动编码器输入不兼容错误

时间:2017-12-25 20:38:45

标签: keras lstm autoencoder

我正在尝试在这里运行Seq2Seq示例,https://blog.keras.io/building-autoencoders-in-keras.html

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)

我的输入是分类编码,例如[1,23,6,12,4,0,0,0],有25个类别,固定长度为1000个。

因此,代码的更新版本如下所示:

    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)

但是,我得到“输入0与层lstm_2不兼容:预期ndim = 3,发现ndim = 2”错误。

将return_sequences = True添加到第一个LSTM图层或删除RepeatVector都会导致不兼容错误。

我不确定我还有什么准备我的意见。

谢谢!

1 个答案:

答案 0 :(得分:0)

您的输入X和输出Y应该是形状(batch_size,timesteps,input_dim)。尝试打印其形状并将其与模型摘要输出形状进行比较。