为了账号安全,请及时绑定邮箱和手机立即绑定

使用 LSTM 自动编码器重新创建输入

使用 LSTM 自动编码器重新创建输入

慕桂英4014372 2023-07-18 15:32:32
我正在尝试使用 LSTM 对输入数据进行编码,然后从编码数据中解码/重新创建它。我有 100 个样本需要运行,每个样本有 40 个时间步长和 1260 个特征。我对网络外观的粗略想法如下。将数据输入到 LSTM 层,将其编码到密集层,然后使用最终的 LSTM 作为输出层。model = Sequential()model.add(LSTM(100, input_shape=(40, 1260), return_sequences=True))model.add(Dense(100, activation='softmax'))model.add(LSTM(1260))model.compile(loss='mse', optimizer=adam, metrics=['accuracy'])model.fit(input_train, input_test, epochs=100, batch_size=1, verbose=2)我尝试过不同的尺寸大小和隐藏层数量,但我无法获得接近 1% 左右的准确度。提前致谢更新的代码:timesteps = 40features = 1260model = Sequential()model.add(LSTM(200, input_shape=(timesteps,features)))model.add(RepeatVector(timesteps))model.add(TimeDistributed(Dense(features)))model.add(LSTM(1260, return_sequences=True))model.summary()opt = keras.optimizers.Adam(lr=0.001)model.compile(loss='mse', optimizer=opt, metrics=['accuracy'])model.fit(input_train, input_test, epochs=200, batch_size=16, verbose=1)
查看完整描述

1 回答

?
忽然笑

TA贡献1806条经验 获得超5个赞

最有可能的是由于引入Dense层而没有跨时间传播其值而引起的错误。keras.layers.RepeatVector()在大多数 LSTM 自动编码器结构中,我观察到在编码器之后和解码器之后使用keras.layers.TimeDistributed(keras.layers.Dense())。尝试复制示例中的结构,然后逐渐修改它们。



查看完整回答
反对 回复 2023-07-18
  • 1 回答
  • 0 关注
  • 119 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信