Jam*_* Li 5 machine-learning lstm keras rnn
我正在训练一个LSTM模型,使用50个步骤的顺序输入3种不同功能,如下所示:
#x_train
[[[a0,b0,c0],.....[a49,b49,c49]],
[a1,b1,c1]......[a50,b50,c50]],
...
[a49,b49,c49]...[a99,b99,c99]]]
Run Code Online (Sandbox Code Playgroud)
使用以下因变量
#y_train
[a50, a51, a52, ... a99]
Run Code Online (Sandbox Code Playgroud)
下面的代码只能预测a,如何在给定的时间步长预测并返回[a,b,c]向量?
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=False))
model.add(Dropout(0.2))
model.add(Dense(1))
model.add(Activation("linear"))
model.compile(loss="mse", optimizer="rmsprop")
return model
Run Code Online (Sandbox Code Playgroud)
Dan*_*ler 10
每层的输出取决于它具有多少个单元/单元/过滤器。
您的输出具有1个功能,因为Dense(1...)只有一个单元格。
只要使其成为一个Dense(3...)就可以解决您的问题。
现在,如果您希望输出具有与输入相同的时间步长,则需要return_sequences = True在所有LSTM层中打开。
LSTM的输出是:
return_sequences=False return_sequences=True 然后TimeDistributed,在接下来的图层中使用图层包装器,就像它们也有时间步长一样(它基本上会将尺寸保留在中间)。
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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5902 次 |
| 最近记录: |