Tensorflow 如何使用时间分布层预测动态长度序列?PYTHON 3

Tensorflow 如何使用时间分布层预测动态长度序列?PYTHON 3,tensorflow,keras,lstm,autoencoder,seq2seq,Tensorflow,Keras,Lstm,Autoencoder,Seq2seq,因此,我正在尝试构建一个基于LSTM的自动编码器,我想用于时间序列数据。它们被分成不同长度的序列。因此,模型的输入具有形状[None,None,n_features],其中第一个None表示样本数,第二个表示序列的时间步数。LSTM使用参数return_sequences=False处理序列,然后使用函数RepeatVector重新创建编码维,并再次在LSTM中运行。最后,我想使用TimeDistributed层,但是如何告诉python时间步长维度是动态的呢?请参阅我的代码: from ker

因此,我正在尝试构建一个基于LSTM的自动编码器,我想用于时间序列数据。它们被分成不同长度的序列。因此,模型的输入具有形状[None,None,n_features],其中第一个None表示样本数,第二个表示序列的时间步数。LSTM使用参数return_sequences=False处理序列,然后使用函数RepeatVector重新创建编码维,并再次在LSTM中运行。最后,我想使用TimeDistributed层,但是如何告诉python时间步长维度是动态的呢?请参阅我的代码:

from keras import backend as K  
.... other dependencies .....
input_ae = Input(shape=(None, 2))  # shape: time_steps, n_features
LSTM1 = LSTM(units=128, return_sequences=False)(input_ae)
code = RepeatVector(n=K.shape(input_ae)[1])(LSTM1) # bottleneck layer
LSTM2 = LSTM(units=128, return_sequences=True)(code)
output = TimeDistributed(Dense(units=2))(LSTM2) # ???????  HOW TO ????

# no problem here so far: 
model = Model(input_ae, outputs=output) 
model.compile(optimizer='adam', loss='mse')

这个函数似乎起到了作用

def repeat(x_inp):

    x, inp = x_inp
    x = tf.expand_dims(x, 1)
    x = tf.repeat(x, [tf.shape(inp)[1]], axis=1)

    return x
范例

input_ae = Input(shape=(None, 2))
LSTM1 = LSTM(units=128, return_sequences=False)(input_ae)
code = Lambda(repeat)([LSTM1, input_ae])
LSTM2 = LSTM(units=128, return_sequences=True)(code)
output = TimeDistributed(Dense(units=2))(LSTM2)

model = Model(input_ae, output) 
model.compile(optimizer='adam', loss='mse')

X = np.random.uniform(0,1, (100,30,2))
model.fit(X, X, epochs=5)
我正在使用tf.keras和tf2.2