Tensorflow RNN 如何创建具有不同批量大小的零状态?
Tensorflow RNN how to create zero state with various batch size?
在这个问题中:接受的答案像这样初始化初始状态:
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 作为批量大小。有什么解决方法吗?
cell.zero_state
接受标量张量。
通过tf.shape
得到占位符的batch size,然后就搞定了:
B = tf.shape(state_placeholder)[0] # the batch size scalar tensor
initial_state = cell.zero_state(B)
在这个问题中
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 作为批量大小。有什么解决方法吗?
cell.zero_state
接受标量张量。
通过tf.shape
得到占位符的batch size,然后就搞定了:
B = tf.shape(state_placeholder)[0] # the batch size scalar tensor
initial_state = cell.zero_state(B)