Tensorflow RNN, как создать нулевое состояние с различным размером пакета? - PullRequest
0 голосов
/ 18 октября 2018

В этом вопросе Как установить состояние RNN TensorFlow, когда state_is_tuple = True? : принятый ответ инициализирует начальное состояние следующим образом:

state_placeholder = tf.placeholder(tf.float32, [num_layers, 2, batch_size, state_size])

Я предполагаю, что для этого требуется определенныйразмер пакета, в то время как у меня сейчас:

inputSeq = tf.placeholder(tf.float32, [None, seqLength, observationDim], name='input_seq')
outputs, final_state = tf.nn.dynamic_rnn(cell, inputSeq, initial_state=initialState)

И я хочу, чтобы это initialState было нулевым состоянием, и его можно настраивать, так как размер пакета inputSeq может варьироваться.Однако cell.zero_state не принимает None в качестве размера пакета.Есть ли обходной путь?

1 Ответ

0 голосов
/ 18 октября 2018

cell.zero_state принимает скалярный тензор.

Получите размер пакета заполнителя с помощью tf.shape, тогда это будет сделано: B = tf.shape(state_placeholder)[0] # the batch size scalar tensor initial_state = cell.zero_state(B)

...