更新时间: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
return_sequences=False
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