tf.nn.bidirectional_dynamic_rnn与tf.nn.static_bidirectional_rnn

tf.nn.bidirectional_dynamic_rnn

tf.nn.bidirectional_dynamic_rnn(
    cell_fw,
    cell_bw,
    inputs,
    sequence_length=None,
    initial_state_fw=None,
    initial_state_bw=None,
    dtype=None,
    parallel_iterations=None,
    swap_memory=False,
    time_major=False,
    scope=None
)

主要参数:

1.cell_fw:用于正向的RNNCell的实例。
2.cell_bw:用于反向的RNNCell的实例。
3.inputs:RNN输入。如果time_major == False(默认值),则必须是形状为[batch_size, max_time, …]的张量,或这些元素的嵌套元组;如果time_major == True,则必须是形状为[max_time, batch_size, …]的张量,或这些元素的嵌套元组。
4.sequence_length:(可选)int32/int64向量,size为[batch_size],包含批处理中每个序列的实际长度。如果未提供,则假定所有批次条目都是完整序列;对每个序列从时间0到max_time应用时间反转。
5.initial_state_fw:(可选)正向RNN的初始状态。这必须是适当类型和形状为[batch_size, cell_fw.state_size]的张量。如果cell_fw.state_size是一个元组,这应该是一个张量元组,在cell_fw.state_size中s具有形状[batch_size, s]。
6.initial_state_bw:(可选)与initial_state_fw相同,但使用与cell_bw相应的属性。
7.dtype:(可选)初始状态和预期输出的数据类型;如果未提供initial_states或RNN状态具有异构dtype,则为必需有的。

返回:

元组(outputs,output_states),其中:

outputs:包含正向和反向rnn输出的元组(output_fw,output_bw)。

如果time_major == False(默认值),则output_fw将是形状为[batch_size, max_time, cell_fw.output_size]的张量,则output_bw将是形状为[batch_size, max_time, cell_bw.output_size]的张量;
如果time_major == True,则output_fw将是形状为[max_time, batch_size, cell_fw.output_size]的张量;output_bw将会是形状为[max_time, batch_size, cell_bw.output_size]的张量。
与bidirectional_rnn不同,它返回一个元组而不是单个连接的张量。如果优选连接的,则正向和反向输出可以连接为tf.concat(outputs, 2)。
output_states:包含双向rnn的正向和反向最终状态的元组。

tf.nn.static_bidirectional_rnn


tf.nn.static_bidirectional_rnn(
    cell_fw,
    cell_bw,
    inputs,
    initial_state_fw=None,
    initial_state_bw=None,
    dtype=None,
    sequence_length=None,
    scope=None
)

主要参数:

1.cell_fw:用于前向传播的RNNCell.
2.cell_bw: 用于反向传播的RNNCell.
3.inputs: A length T list of inputs, each a tensor of shape [batch_size, input_size], or a nested tuple of such elements.(输入 数据为list类型,list中元素为Tensor,每个Tensor的shape为[batch_size, input_size],如有batch_size个文档,每个文档的单词数量为1000,每个单词的词向量维度为100,则该inputs为list(1000tensor(batch_size100)))
4.initial_state_fw: 正向RNN的初始状态。这必须是适当类型和形状为[batch_size, cell_fw.state_size]的张量。如果cell_fw.state_size是一个元组,这应该是一个张量元组,在cell_fw.state_size中s具有形状[batch_size, s]。
5.dtype: (可选)初始状态和预期输出的数据类型;如果未提供initial_states或RNN状态具有异构dtype,则为必需有的。

返回:

(outputs, output_state_fw, output_state_bw)

区别:

动态中
input的形状[batch_size, max_time, …]
tf.concat(outputs, 2)
outputs[:,-1,:]是最后一个时间步的输出

静态中
input的形状[batch_size, input_size],需要将数据转化成steps*[batch_size,input_size]的格式。
outputs[-1]是最后一个时间步的输出

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值