Join us at TensorFlow World, Oct 28-31. Use code TF20 for 20% off select passes. Register now

tf.contrib.framework.nest.map_structure_with_tuple_paths_up_to

View source on GitHub

Applies a function or op to a number of partially flattened inputs.

tf.contrib.framework.nest.map_structure_with_tuple_paths_up_to(
    shallow_tree,
    func,
    *inputs,
    **kwargs
)

Like map_structure_up_to(), except that the 'func' argument takes a path tuple as its first argument, followed by the corresponding values from *inputs.

Example:

lowercase = {'a': 'a', 'b': ('b0', 'b1')} uppercase = {'a': 'A', 'b': ('B0', 'B1')}

def print_path_and_values(path, *values): print("path: {}, values: {}".format(path, values))

shallow_tree = {'a': None} map_structure_with_tuple_paths_up_to(shallow_tree, print_path_and_values, lowercase, uppercase)

path: ('a',), values: ('a', 'A') path: ('b', 0), values: ('b0', 'B0') path: ('b', 1), values: ('b1', 'B1')

shallow_tree = {'b': None} map_structure_with_tuple_paths_up_to(shallow_tree, print_path_and_values, lowercase, uppercase, check_types=False)

path: ('b', 1), values: (('bo', 'b1'), ('B0', 'B1'))

shallow_tree = {'a': None, 'b': {1: None}} map_structure_with_tuple_paths_up_to(shallow_tree, print_path_and_values, lowercase, uppercase, check_types=False)

path: ('a',), values: ('a', 'A') path: ('b', 1), values: ('b1', B1')

Args:

  • shallow_tree: a shallow tree, common to all the inputs.
  • func: callable that takes args (path, inputs_0_value, ... , inputs_N_value), where path is a tuple path to a leaf node in shallow_tree, and inputs_i_value is the corresponding value from inputs[i].
  • *inputs: nested structures that are all structurally compatible with shallow_tree.
  • **kwargs: kwargs to feed to func(). Special kwarg check_types is not passed to func, but instead determines whether the types of iterables within the structures have to be same (e.g. map_structure(func, [1], (1,)) raises a TypeError exception). To allow this set this argument to False.

Raises:

  • TypeError: If shallow_tree is a sequence but one of *inputs is not.
  • TypeError: If the sequence types of shallow_tree are different from input_tree.
  • ValueError: If the sequence lengths of shallow_tree are different from input_tree.

Returns:

Result of repeatedly applying func. Has the same structure layout as shallow_tree.