Я хотел использовать этот пример и расширить его для реализации архитектуры на следующем рисунке. Код использует BasicLSTMCell и tf.contrib.rnn.BasicLSTMCell следующим образом:
lstm_cell = tf.contrib.rnn.BasicLSTMCell(n_hidden)
outputs, states = tf.contrib.rnn.static_rnn(lstm_cell, x, dtype=tf.float32,sequence_length=seqlen)
Я напечатал «состояния» (и выходные данные), и я ожидал, что «состояния» будут иметь форму [количество входных последовательностей, x], где x - длины каждой входной последовательности.
НО, когда я печатаю «состояния» (или «выходы»), они оба имеют форму [количество входных последовательностей, n_hidden ], где n_hidden - количество объектов скрытого слоя.
Прежде всего, я печатаю скрытые состояния только для одного временного шага (возможно, последнего временного шага), а не развернутого RNN ??
Как я могу распечатать все скрытые состояния после того, как RNN обрабатывает каждый шаг входной последовательности (чтобы убедиться, что я реализую следующую архитектуру)?
Во-вторых, как бы вы реализовали следующую архитектуру в tenorflow? Предположим, что каждый x-i является 12-битным двоичным вектором, и каждая входная последовательность включает в себя не более 80 векторов. Каждая входная последовательность связана с выходной последовательностью, и цель состоит в том, чтобы предсказать эти выходные последовательности, просматривая их соответствующие входные последовательности.