当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python tf.compat.v1.nn.static_rnn用法及代码示例


创建由 RNNCell cell 指定的循环神经网络。 (已弃用)

用法

tf.compat.v1.nn.static_rnn(
    cell, inputs, initial_state=None, dtype=None, sequence_length=None, scope=None
)

参数

  • cell RNNCell 的一个实例。
  • inputs 一个长度为 T 的输入列表,每个输入都是一个形状为 [batch_size, input_size]Tensor 或此类元素的嵌套元组。
  • initial_state (可选)RNN 的初始状态。如果 cell.state_size 是整数,则它必须是具有适当类型和形状的 Tensor [batch_size, cell.state_size] 。如果 cell.state_size 是一个元组,这应该是一个具有形状 [batch_size, s] for s in cell.state_size 的张量的元组。
  • dtype (可选)初始状态和预期输出的数据类型。如果未提供 initial_state 或 RNN 状态具有异构 dtype,则为必需。
  • sequence_length 指定输入中每个序列的长度。一个 int32 或 int64 向量(张量)大小 [batch_size] ,值在 [0, T)
  • scope 创建的子图的变量范围;默认为"rnn"。

返回

  • 一对(输出,状态),其中:
    • 输出是一个长度为 T 的输出列表(每个输入一个),或这些元素的嵌套元组。

    • state 是最终状态

抛出

  • TypeError 如果cell 不是 RNNCell 的实例。
  • ValueError 如果 inputsNone 或空列表,或者无法通过形状推断从输入推断输入深度(列大小)。

警告:此函数已弃用。它将在未来的版本中删除。更新说明:请使用keras.layers.RNN(cell, unroll=True),相当于这个API

生成的最简单的 RNN 网络形式是:

state = cell.zero_state(...)
  outputs = []
  for input_ in inputs:
    output, state = cell(input_, state)
    outputs.append(output)
  return (outputs, state)

但是,还有一些其他选项可用:

可以提供初始状态。如果提供了sequence_length向量,则进行动态计算。这种计算方法不会计算超过 minibatch 的最大序列长度的 RNN 步长(从而节省计算时间),并以示例的序列长度正确地将状态传播到最终状态输出。

执行的动态计算是,在时间 t 为批次行 b

(output, state)(b, t) =
    (t >= sequence_length(b))
      ? (zeros(cell.output_size), states(b, sequence_length(b) - 1))
     :cell(input(b, t), state(b, t - 1))

相关用法


注:本文由纯净天空筛选整理自tensorflow.org大神的英文原创作品 tf.compat.v1.nn.static_rnn。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。