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

标签 neural-network deep-learning keras lstm autoencoder

我在本教程中阅读了 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/

相关文章:

keras - 如何在 ImageDataGenerator 中将 featurewise_center=True 与 flow_from_directory 一起使用?

python - Keras:class_weight 实际上试图平衡什么?

python - TensorFlow 中出现错误

python - Theano : Pass iterating index of scan to the called function

python - 拟合后手动计算的损失比上一个时期的损失高一个数量级

python - Keras 中不带 for 循环的 One-hot 编码

machine-learning - 我们如何获取/定义卷积神经网络中的滤波器?

neural-network - 用于神经网络的 Torch 打包版本

machine-learning - 使用深度神经网络估计对象大小

nlp - 如何将 One-Hot Encoding 值计算为实值向量?