При использовании dynamic_rnn
требуется параметр initial_state
. Легким решением являетсяКак установить начальное состояние rnn как параметр в тензорном потоке?
initial_state = lstm_cell.zero_state(batch_size, tf.float32)
Но я хочу установить начальное состояние как параметр, который можно оптимизировать, как мне это сделать?
Я могу определить две обучаемые переменные, называемые h0
и c0
, которые представляют собой два вектора. Но для dynamic_rnn
требуются две матрицы, где первое измерение - batch_size
. Как я могу расширить вектор h0
до матрицы, каждая строка которой h0
?
Мне не ясно, из документации, что 'tf.tile' связывает все значения, связанные друг с другом (чтобы убедиться, что вы только узнаете' state_size' множество значений, а не 'batch_size * state_size' много значений). Вы знаете, если это так? – kbrose
Да. Когда вы рисуете вектор, тогда он свяжет все эти веса вместе. Я не тестировал код в своем ответе, поэтому у меня могло быть что-то немного, но эта основная стратегия должна работать. – Aaron
На самом деле, это должно быть
initial_state = tf.tile(initial_state_vector, [batch_size, 1])
. Второй параметр tf.tile должен быть списком или тензором, в котором каждый элемент разбивает каждый размер начального_стате_вектора. –