当return_state和return_sequences为false时,lstm返回什么

时间:2019-05-14 12:15:24

标签: keras lstm

这是我的代码。

from keras.layers import LSTM, Input
from keras.models import Model
x = Input(shape=(3,2))
lstm1 = LSTM(units=1, return_sequences=True, return_state=True)
lstm2 = LSTM(units=1, return_sequences=False, return_state=False)
out,h,c = lstm1(x)
out = lstm2(out, initial_state=[h,c])
model = Model(inputs=x, outputs=out)

由于return_statereturn_sequences均为False。但是,以下代码仍返回某些内容。我想知道那是什么?

import numpy as np
y=np.array([[3,1],[2,1], 
  [1,2]]).reshape((1,3,2)) 
z=model.predict(y) 
print(z)

输出:

[[-0.01467976]]

1 个答案:

答案 0 :(得分:2)

来自keras docs

  

return_sequences:布尔值。是否返回最后一个输出   输出序列或完整序列。

设置return_sequences=False将返回上一次LSTM序列解包的状态,在您的情况下,大小为1

更改您的units=10,然后您会看到它将返回大小为10的数组。

图片表示

![enter image description here

  • 如果return_sequences=True,则返回向量y1,y2,...yn
  • 如果return_sequences=False,则仅返回向量yn