我试图用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])
答案 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)。