gpt4 book ai didi

neural-network - 如何将 LSTM-autoencoder 应用于变体长度的时间序列数据?

转载 作者:行者123 更新时间:2023-12-04 04:31:13 27 4
gpt4 key购买 nike

我在本教程中阅读了 LSTM-autoencoder:https://blog.keras.io/building-autoencoders-in-keras.html ,并在下面粘贴相应的 keras 实现:

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)

在这个实现中,他们将输入固定为形状 (timesteps, input_dim),这意味着时间序列数据的长度固定为 timesteps .如果我没记错的话,RNN/LSTM 可以处理可变长度的时间序列数据,我想知道是否有可能以某种方式修改上面的代码以接受任何长度的数据?

谢谢!

最佳答案

您可以使用 shape=(None, input_dim)
但是RepeatVector将需要一些直接从输入张量中获取维度的黑客攻击。 (代码适用于tensorflow,不确定theano)

import keras.backend as K

def repeat(x):

stepMatrix = K.ones_like(x[0][:,:,:1]) #matrix with ones, shaped as (batch, steps, 1)
latentMatrix = K.expand_dims(x[1],axis=1) #latent vars, shaped as (batch, 1, latent_dim)

return K.batch_dot(stepMatrix,latentMatrix)


decoded = Lambda(repeat)([inputs,encoded])
decoded = LSTM(input_dim, return_sequences=True)(decoded)

关于neural-network - 如何将 LSTM-autoencoder 应用于变体长度的时间序列数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46494877/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com