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

问题描述 投票:0回答:1

我试图在这里运行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都会导致不兼容错误。

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

谢谢!

keras lstm autoencoder
1个回答
0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.