tensorflow中的tf.nn.dynamic_rnn详解

函数原型

tf.nn.dynamic_rnn(

    cell,

    inputs,

    sequence_length=None,

    initial_state=None,

    dtype=None,

    parallel_iterations=None,

    swap_memory=False,

    time_major=False,

    scope=None
    )

参数讲解

  • cell: RNNCell的一个实例.

  • inputs: RNN输入.如果time_major == False(默认), 则是一个shape为[batch_size, max_time, input_size]的Tensor,或者这些元素的嵌套元组。如果time_major == True,则是一个shape为[max_time, batch_size, input_size]的Tensor,或这些元素的嵌套元组。

  • sequence_length: (可选)大小为[batch_size],数据的类型是int32/int64向量。如果当前时间步的index超过该序列的实际长度时,则该时间步不进行计算,RNN的state复制上一个时间步的,同时该时间步的输出全部为零。

  • initial_state: (可选)RNN的初始state(状态)。如果cell.state_size(一层的RNNCell)是一个整数,那么它必须是一个具有适当类型和形状的张量[batch_size,cell.state_size]。如果cell.state_size是一个元组(多层的RNNCell,如MultiRNNCell),那么它应该是一个张量元组,每个元素的形状为[batch_size,s] for s in cell.state_size。

  • time_major: inputs 和outputs 张量的形状格式。如果为True,则这些张量都应该是(都会是)[max_time, batch_size, depth]。如果为false,则这些张量都应该是(都会是)[batch_size,max_time, depth]。time_major=true说明输入和输出tensor的第一维是max_time。否则为batch_size。使用time_major =True更有效,因为它避免了RNN计算开始和结束时的转置.但是,大多数TensorFlow数据都是batch-major,因此默认情况下,此函数接受输入并以batch-major形式发出输出.

返回值

一对(outputs, state),其中:

  • outputs: RNN输出Tensor.如果time_major == False(默认),这将是shape为[batch_size, max_time, cell.output_size]的Tensor.如果time_major == True,这将是shape为[max_time, batch_size, cell.output_size]的Tensor.

  • state: 最终的状态.一般情况下state的形状为 [batch_size, cell.output_size ]。如果cell是LSTMCells,则state将是包含每个单元格的LSTMStateTuple的元组,state的形状为[2,batch_size, cell.output_size ]

猜你喜欢

转载自blog.csdn.net/m0_47220500/article/details/108240753