tf.contrib.layers.stack(inputs, layer, stack_args, **kwargs)

tf.contrib.layers.stack(inputs, layer, stack_args, **kwargs)

Builds a stack of layers by applying layer repeatedly using stack_args.

stack allows you to repeatedly apply the same operation with different arguments stack_args[i]. For each application of the layer, stack creates a new scope appended with an increasing number. For example:

  y = stack(x, fully_connected, [32, 64, 128], scope='fc')
  # It is equivalent to:

  x = fully_connected(x, 32, scope='fc/fc_1')
  x = fully_connected(x, 64, scope='fc/fc_2')
  y = fully_connected(x, 128, scope='fc/fc_3')

If the scope argument is not given in kwargs, it is set to layer.__name__, or layer.func.__name__ (for functools.partial objects). If neither __name__ nor func.__name__ is available, the layers are called with scope='stack'.


  • inputs: A Tensor suitable for layer.
  • layer: A layer with arguments (inputs, *args, **kwargs)
  • stack_args: A list/tuple of parameters for each call of layer. **kwargs: Extra kwargs for the layer.


a Tensor result of applying the stacked layers.


  • ValueError: if the op is unknown or wrong.

Defined in tensorflow/contrib/layers/python/layers/