返回状态Keras-多变量输出
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了返回状态Keras-多变量输出相关的知识,希望对你有一定的参考价值。
参考return state
部分的这篇博客:https://machinelearningmastery.com/return-sequences-and-return-states-for-lstms-in-keras/
我正在尝试实现一个多变量(预测2输出 - y1
和y2
)stateful
LSTM
模型。这是片段:
## defining the model
def my_model():
input_x = Input(batch_shape=(batch_size, look_back, x_train.shape[2]), name='input')
drop = Dropout(0.5)
lstm_1, state_h, state_c = LSTM(50, return_sequences=False,batch_input_shape=(batch_size, look_back, x_train.shape[2]),return_state=True)(input_x)
lstm_1_drop = drop(lstm_1)
y1 = Dense(1, activation='linear', name='op1')(lstm_1_drop)
y2 = Dense(1, activation='linear', name='op2')(lstm_1_drop)
model = Model(inputs=input_x, outputs=[y1,y2])
optimizer = Adam(lr=0.0005, decay=0.00001)
model.compile(loss='mse', optimizer=optimizer,metrics=['mse'])
model.summary()
return model
model = my_model()
history = model.fit(x_train, [y_11_train,y_22_train], epochs=1, batch_size=batch_size, verbose=0, shuffle=False)
题
我在这里有一些问题:我不确定它是否已在此处正确实施,因为我没有按照博客中的说明在lstm_1, state_h, state_c
的outputs
中提供Model()
,因为这里我有两个不同的预测,而不是1博客。
如果我必须在lstm_1, state_h, state_c
的outputs
中喂Model()
,它如何实施以及它将如何影响model.fit
部分。
任何帮助将受到高度赞赏。
谢谢
答案
阅读Blog帖子似乎作者确实在输出中实现了state_h来调查lstm层的内部。这样的输出对于已经训练过的网络是有用的,但不适用于训练。
对于培训,您可以安全地将信息留在输出中。如果您想在预测期间获得信息,只需定义第二个模型:
model = Model(inputs=input_x, outputs=[y1,y2,state_h,state_c])
然后Keras将重复使用您已经训练过的图层,并在输出中获得信息,而不必担心您的训练。
以上是关于返回状态Keras-多变量输出的主要内容,如果未能解决你的问题,请参考以下文章