阅读(7.9k) 书签 (0)

TensorFlow高阶函数:tf.foldl

2018-10-20 17:05 更新
函数:tf.foldl
foldl ( 
    fn , 
    elems , 
    initializer = None , 
    parallel_iterations = 10 , 
    back_prop = True , 
    swap_memory = False , 
    name = None
 )

定义在:tensorflow/python/ops/functional_ops.py.

参见指南:高阶函数>高阶运算符

该 TensorFlow 高阶函数表示折叠从0维度上的 elems 中的解压缩张量列表.

该 foldl 运算符反复地将可调用的 fn 应用于从第一个到最后一个元素序列.这些元素是由0维度上的 elems 维度0上解压缩张量构成.可调用的 fn 将采用两个张量作为参数.第一个参数是从上一次的调用 fn 计算而来的累计值.如果 initializer(初始值设定项) 是 None,则 elems 必须至少包含一个元素,并且其第一个元素用作初始值设定项.

假设 elems 被解压缩成 values、一个张量列表.结果张量的形状为:fn(initializer, values[0]).shape.

参数:

  • fn:可执行的调用.
  • elems:在0维度上解压缩的张量.
  • initializer:(可选)累加器的初始值.
  • parallel_iterations:(可选)允许并行运行的迭代次数.
  • back_prop:(可选)True,支持反向传播.
  • swap_memory:(可选)True,可实现 GPU-CPU 内存交换.
  • name:(可选)返回的张量的名称前缀.

返回值:

返回一个张量,该张量来自从第一次到最后一次将 fn 连续应用到从 elems 中解压缩出来的张量列表.

可能引发的错误:

  • TypeError:如果 fn 不可调用

使用实例:

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