tf.foldl( fn, elems, initializer=None, parallel_iterations=10, back_prop=True, swap_memory=False, name=None )
See the guide: Higher Order Functions > Higher Order Operators
foldl on the list of tensors unpacked from
elems on dimension 0.
This foldl operator repeatedly applies the callable
fn to a sequence
of elements from first to last. The elements are made of the tensors
elems on dimension 0. The callable fn takes two tensors as
arguments. The first argument is the accumulated value computed from the
preceding invocation of fn. If
initializer is None,
elems must contain
at least one element, and its first element is used as the initializer.
elems is unpacked into
values, a list of tensors. The shape
of the result tensor is fn(initializer, values).shape`.
This method also allows multi-arity
elems and output of
is a (possibly nested) list or tuple of tensors, then each of these tensors
must have a matching first (unpack) dimension. The signature of
match the structure of
elems. That is, if
(t1, [t2, t3, [t4, t5]]), then an appropriate signature for
fn = lambda (t1, [t2, t3, [t4, t5]]):.
fn: The callable to be performed.
elems: A tensor or (possibly nested) sequence of tensors, each of which will be unpacked along their first dimension. The nested sequence of the resulting slices will be the first argument to
initializer: (optional) A tensor or (possibly nested) sequence of tensors, as the initial value for the accumulator.
parallel_iterations: (optional) The number of iterations allowed to run in parallel.
back_prop: (optional) True enables support for back propagation.
swap_memory: (optional) True enables GPU-CPU memory swapping.
name: (optional) Name prefix for the returned tensors.
A tensor or (possibly nested) sequence of tensors, resulting from applying
fn consecutively to the list of tensors unpacked from
elems, from first
fnis not callable.
elems = [1, 2, 3, 4, 5, 6] sum = foldl(lambda a, x: a + x, elems) # sum == 21