阅读(1555)
赞(9)
TensorFlow函数:tf.nn.bidirectional_dynamic_rnn
2018-11-30 14:26:34 更新
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
)
定义在:tensorflow/python/ops/rnn.py.
请参阅指南:神经网络>递归神经网络
创建双向递归神经网络的动态版本.
获取输入并构建独立的前向和后向RNN.前向和后向单元的input_size必须匹配.默认情况下,两个方向的初始状态为零(但可以选择设置),并且不返回任何中间状态 - 如果没有给出长度,则为给定的 (传入) 长度完全展开网络,或者在未给出长度的情况下完全展开网络.
参数:
- cell_fw:用于正向的RNNCell的实例.
- cell_bw:用于反向的RNNCell的实例.
- inputs:RNN输入.如果time_major == False(默认值),则必须是形状为[batch_size, max_time, ...]的张量,或这些元素的嵌套元组;如果time_major == True,则必须是形状为[max_time, batch_size, ...]的张量,或这些元素的嵌套元组.
- sequence_length:(可选)int32/int64向量,size为[batch_size],包含批处理中每个序列的实际长度.如果未提供,则假定所有批次条目都是完整序列;对每个序列从时间0到max_time应用时间反转.
- initial_state_fw:(可选)正向RNN的初始状态.这必须是适当类型和形状为[batch_size, cell_fw.state_size]的张量.如果cell_fw.state_size是一个元组,这应该是一个张量元组,在cell_fw.state_size中s具有形状[batch_size, s].
- initial_state_bw:(可选)与initial_state_fw相同,但使用与cell_bw相应的属性.
- dtype:(可选)初始状态和预期输出的数据类型;如果未提供initial_states或RNN状态具有异构dtype,则为必需有的.
- parallel_iterations:(默认值:32),并行运行的迭代次数;那些没有任何时间依赖性并且可以并行运行的操作将是;该参数用于交换空间的时间;值>> 1使用更多内存但占用更少时间,而较小值使用较少内存但计算时间较长.
- swap_memory:透明地交换正向推理中产生的张量,但是从GPU到CPU需要向后支撑.这允许训练通常不适合单个GPU的RNN,具有非常小的(或没有)性能损失.
- time_major:inputs和outputs张量的形状格式;如果是true,那些Tensors形状必须为[max_time, batch_size, depth],如果false,这些Tensors的形状必须为[batch_size, max_time, depth];使用time_major = True更有效,因为它避免了RNN计算开始和结束时的转置,但是,大多数TensorFlow数据都是批处理主数据,因此默认情况下,此函数接受输入并以批处理主体形式发出输出.
- scope:用于创建子图的VariableScope;默认为“bidirectional_rnn”.
返回:
元组(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).
- 如果time_major == False(默认值),则output_fw将是形状为[batch_size, max_time, cell_fw.output_size]的张量,则output_bw将是形状为[batch_size, max_time, cell_bw.output_size]的张量;
output_states:包含双向rnn的正向和反向最终状态的元组.
可能引发的异常:
- TypeError:如果cell_fw或cell_bw不是RNNCell的实例.