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


Python tf.foldr用法及代码示例


foldr 在从维度 0 的 elems 解压缩的张量列表中。(不推荐使用的参数值)

用法

tf.foldr(
    fn, elems, initializer=None, parallel_iterations=10, back_prop=True,
    swap_memory=False, name=None
)

参数

  • fn 要执行的可调用对象。
  • elems 张量或(可能是嵌套的)张量序列,每个张量都将沿其第一维展开。结果切片的嵌套序列将是 fn 的第一个参数。
  • initializer (可选)张量或(可能是嵌套的)张量序列,作为累加器的初始值。
  • parallel_iterations (可选)允许并行运行的迭代次数。
  • back_prop (可选)已弃用。 False 禁用对反向传播的支持。更喜欢使用tf.stop_gradient
  • swap_memory (可选)True 启用GPU-CPU 内存交换。
  • name (可选)返回张量的名称前缀。

返回

  • 张量或(可能嵌套的)张量序列,由从最后一个到第一个从 elems 解包的张量列表连续应用 fn 产生。

抛出

  • TypeError 如果 fn 不可调用。

警告:不推荐使用某些参数值:(back_prop=False)。它们将在未来的版本中被删除。更新说明:back_prop=False 已弃用。考虑改用 tf.stop_gradient。代替:results = tf.foldr(fn, elems, back_prop=False) 使用:results = tf.nest.map_structure(tf.stop_gradient, tf.foldr(fn, elems))

此 foldr 运算符重复地将可调用的 fn 应用于从最后到第一个的元素序列。元素由从 elems 解包的张量组成。可调用的 fn 将两个张量作为参数。第一个参数是从前面的 fn 调用计算的累加值,第二个参数是 elems 的当前位置的值。如果initializer 为None,则elems 必须至少包含一个元素,并且它的第一个元素用作初始值设定项。

假设 elems 被解压缩到 values 中,这是一个张量列表。结果张量的形状是 fn(initializer, values[0]).shape

此方法还允许 multi-arity elemsfn 的输出。如果elems 是张量的(可能是嵌套的)列表或元组,则这些张量中的每一个都必须具有匹配的第一个(解包)维度。 fn 的签名可能与 elems 的结构匹配。也就是说,如果 elems(t1, [t2, t3, [t4, t5]]) ,那么 fn 的适当签名是: fn = lambda (t1, [t2, t3, [t4, t5]]):

例子:

elems = [1, 2, 3, 4, 5, 6]
sum = foldr(lambda a, x:a + x, elems)
# sum == 21

相关用法


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