LSTM自动编码器关于Keras尺寸的问题

时间:2018-12-11 20:38:43

标签: python keras lstm autoencoder

我试图用Keras做一个自动编码器。我遇到以下错误

  

ValueError:检查输入时出错:预期lstm_1_input具有3   尺寸,但数组的形状为(480,7)

这些是以下数据信息

df.shape => (480, 7)

timesteps = 15
dim = 7
lH = LossHistory()

model = Sequential()
model.add(LSTM(50, input_shape=(timesteps,dim), return_sequences=True))
model.add(Dense(dim))
model.compile(loss='mae',optimizer = 'adam')

这是使用fit时的问题

model.fit(data,data, epochs=20, batch_size=100, validation_data=(data,data),verbose=0, shuffle=False, callbacks=[lH])

1 个答案:

答案 0 :(得分:0)

在此link中,您可以将自动编码器设置为

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)

但是您应该确定每个样本的时间步长。例如,如果您决定每个样本有10个步长,则可以将480个观测值“切碎”整个数据,分成48个样本,每个样本有10个时间步长。现在输入形状为(48,10,7)。