что возвращает lstm, когда return_state и return_sequence ложны - PullRequest
0 голосов
/ 14 мая 2019

Вот мой код.

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_state и return_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 Ответ

2 голосов
/ 14 мая 2019

От keras docs

return_sequence: логическое значение. Вернуть ли последний вывод в выходная последовательность или полная последовательность.

настройка return_sequences=False вернет состояние последнего развертывания последовательности LSTM, которое в вашем случае имеет размер 1.

Измените units=10, и вы увидите, что он вернет массив размером 10.

Графическое представление

![enter image description here

  • если return_sequences=True, то возвращаются векторы y1,y2,...yn
  • если return_sequences=False, то возвращается только вектор yn
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...