KERAS:LSTM SEQ2SEQ自动编码器输入不合同性错误



我正在尝试在此处运行seq2seq示例,https://blog.keras.io/building-autoencoders-in-keras-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与lays lstm_2:预期ndim = 3,找到ndim = 2"错误。

添加return_sequences = tue第一个LSTM层或删除重复向量都会给出不合适的错误。

我不确定我还必须如何准备我的输入。

谢谢!

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

相关内容

  • 没有找到相关文章

最新更新