В настоящее время я пытаюсь понять смысл outputs
и states
функции tf.nn.rnn
в tensorflow
:LSTM пример с MNIST
outputs, states = tf.nn.rnn(lstm_cell, x, dtype=tf.float32)
через LSTM MNIST tutorial.
Действительно, в отношении следующего урока, Understanding LSTM, мне интересно, что соответствует этим переменным.
На мой взгляд, outputs
соответствует скрытому состоянию (обозначен как h_t
в предыдущей ссылке), но я не уверен.
Таким образом, я понимаю, что outputs
- это список time_steps
тензоров формы (batch_size, n_hidden)
. Но почему states
- это список 2
тензоров формы (batch_size, n_hidden)
. Это только состояние ячейки для последнего шага времени?
, чтобы уточнить, 'output' представляют' y = Vh', где 'V' - весовая матрица, а' h' - значение скрытого состояния. – vin
Неправильное. y = Vh - это упрощение того, что происходит в этом случае. Ссылка в OP о понимании LSTM - хорошее место, чтобы лучше понять, что происходит внутри. Чтобы получить текущий y, вам нужно предварительное скрытое состояние тайм-шага (c и h), и вам нужен текущий вектор X, а затем вы объедините их с алгоритмом LSTM, чтобы получить следующий выход y. –
это упрощение, но какая часть неправильная? для получения выходных данных (которые отличаются от скрытого состояния) вам нужно умножить скрытое состояние на некоторую матрицу V. В свою очередь, скрытое состояние состоит из предыдущего скрытого состояния (h_ {t-1}), некоторая часть состояние ячейки (c_t) и текущее состояние (X). – vin