【问题标题】:Tensorflow RNN how to create zero state with various batch size?Tensorflow RNN 如何创建具有各种批量大小的零状态?
【发布时间】:2019-03-22 19:34:58
【问题描述】:

在这个问题How do I set TensorFlow RNN state when 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 作为批量大小。有什么解决办法吗?

【问题讨论】:

    标签: python tensorflow lstm rnn


    【解决方案1】:

    cell.zero_state 接受标量张量。

    通过tf.shape获取占位符的batch size,就搞定了: B = tf.shape(state_placeholder)[0] # the batch size scalar tensor initial_state = cell.zero_state(B)

    【讨论】:

    • 谢谢!我试过 get_shape() 并没有考虑过这个。
    猜你喜欢
    • 2021-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-27
    相关资源
    最近更新 更多