如何解决使用LSTM自动编码器重新创建输入
我正在尝试使用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 = 40
features = 1260
model = 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,epochs=200,batch_size=16,verbose=1)
解决方法
glass3,
最有可能是由于引入Dense
层而没有在整个时间上分散其值而导致的错误。在大多数LSTM自动编码器结构中,我观察到在编码器之后使用keras.layers.RepeatVector()
,在解码器之后使用keras.layers.TimeDistributed(keras.layers.Dense())
。尝试从示例中复制结构,然后逐步对其进行修改。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。