用于多变量序列预测的 Lstm

Lstm for multivariate sequence prediction

我对 Stacked LSTM 模型感到困惑。 Lstm 有不同类型的应用。 例如,在图像中,显示了两种类型的 LSTM,机器翻译和视频分类。

我的模型如下

def create_stack_lstm_model(units):
    model = Sequential()
    model.add(LSTM(units, activation='relu', return_sequences=True, input_shape=(n_steps, n_features)))
    model.add(LSTM(units, activation='relu'))
    model.add(Dense(n_features))
    model.compile(optimizer='adam', loss='mse')  
    return model
stack_lstm_model = create_stack_lstm_model(100)
def fit_model(model):
    early_stop = keras.callbacks.EarlyStopping(monitor = 'val_loss', patience = 10)
    #history = model.fit(x,y,epochs = 200,validation_split = 0.2,batch_size = 1,shuffle = False,callbacks = [early_stop])
    history = model.fit(x,y,epochs = 250)
    return history
history_gru = fit_model(stack_lstm_model)

输入 x 的形状为 (1269, 4, 7)。 输入x和输出y的几个样本如下

[[ 6 11 14 15 28 45 35]
 [ 2 18 19 21 39 45 36]
 [22 32 41 42 43 44 31]
 [ 5 12 17 18 38 40 22]] [ 5 10 25 27 36 39 40]
[[ 2 18 19 21 39 45 36]
 [22 32 41 42 43 44 31]
 [ 5 12 17 18 38 40 22]
 [ 5 10 25 27 36 39 40]] [ 5 13 25 27 40 44  2]
[[22 32 41 42 43 44 31]
 [ 5 12 17 18 38 40 22]
 [ 5 10 25 27 36 39 40]
 [ 5 13 25 27 40 44  2]] [ 2  5  9 20 21 42 15]
[[ 5 12 17 18 38 40 22]
 [ 5 10 25 27 36 39 40]
 [ 5 13 25 27 40 44  2]
 [ 2  5  9 20 21 42 15]] [ 4 16 21 26 31 37 24]

这个实现属于机器翻译还是视频分类?

它属于第二类(视频分类),因为你输入的长度等于输出的长度。

第一类假定您创建了一个单独的 LSTM 编码器和 LSTM 解码器。因此,输出和输入序列的长度可能不同。