且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

LSTM Keras API预测多个输出

更新时间:2023-12-02 14:39:22

每层的输出取决于它具有多少个单元/单元/过滤器.

The output of every layer is based on how many cells/units/filters it has.

您的输出具有1个功能,因为Dense(1...)只有一个单元格.

Your output has 1 feature because Dense(1...) has only one cell.

只需将其设置为Dense(3...)即可解决您的问题.

Just making it a Dense(3...) would solve your problem.

现在,如果希望输出与输入具有相同的时间步长,则需要在所有LSTM层中打开return_sequences = True.

Now, if you want the output to have the same number of time steps as the input, then you need to turn on return_sequences = True in all your LSTM layers.

LSTM的输出是:

  • (批量大小,单位)-带return_sequences=False
  • (批量大小,时间步长,单位)-使用return_sequences=True
  • (Batch size, units) - with return_sequences=False
  • (Batch size, time steps, units) - with return_sequences=True

然后,在随后的图层中使用TimeDistributed图层包装,就像它们也有时间步长一样(它基本上会将尺寸保留在中间).

Then you use a TimeDistributed layer wrapper in your following layers to work as if they also had time steps (it will basically preserve the dimension in the middle).

def build_model():
    model = Sequential()

    model.add(LSTM(
        input_shape=(50,3),
        return_sequences=True, units=50))
    model.add(Dropout(0.2))

    model.add(LSTM(
        250,
        return_sequences=True))
    model.add(Dropout(0.2))

    model.add(TimeDistributed(Dense(3)))
    model.add(Activation("linear"))

    model.compile(loss="mse", optimizer="rmsprop")
    return model