tf.contrib.framework.nest.map_structure_up_to
Применяет функцию или операцию к ряду частично сплющенных входных данных.
tf.contrib.framework.nest.map_structure_up_to(
shallow_tree, func, *inputs, **kwargs
)
Входные данные inputs сплющиваются до shallow_tree перед применением функции.
Случай использования:
Иногда нам нужно применить функцию к частично сплющенной последовательности (например, когда сама функция принимает последовательные входные данные). Это достигается указанием поверхностной структуры, shallow_tree до которой нужно сплющить.
Входные данные inputs, можно рассматривать как имеющие ту же структуру, что и shallow_tree, но с листовыми узлами, которые сами являются древовидными структурами.
Таким образом, эта функция вернет результат с такой же базовой структурой, как у shallow_tree.
Примеры:
shallow_tree = [None, None] inp_val = [1, 2, 3] out = map_structure_up_to(shallow_tree, lambda x: 2 * x, inp_val) # Output is: [2, 4]
ab_tuple = collections.namedtuple("ab_tuple", "a, b")
op_tuple = collections.namedtuple("op_tuple", "add, mul")
inp_val = ab_tuple(a=2, b=3)
inp_ops = ab_tuple(a=op_tuple(add=1, mul=2), b=op_tuple(add=2, mul=3))
out = map_structure_up_to(inp_val, lambda val, ops: (val + ops.add) * ops.mul,
inp_val, inp_ops)
# Output is: ab_tuple(a=6, b=15)
data_list = [[2, 4, 6, 8], [[1, 3, 5, 7, 9], [3, 5, 7]]]
name_list = ['evens', ['odds', 'primes']]
out = map_structure_up_to(
name_list,
lambda name, sec: "first_{}_{}".format(len(sec), name),
name_list, data_list)
# Output is: ['first_4_evens', ['first_5_odds', 'first_3_primes']]
| Аргументы | |
|---|---|
shallow_tree | поверхностное дерево, общее для всех входных данных. |
func | вызываемая функция, которая будет применена к каждому входному значению индивидуально. |
*inputs | произвольно вложенная комбинация объектов, совместимых с поверхностным деревом. Функция func применяется к соответствующим частично сплющенным элементам каждого входа, поэтому функция должна поддерживать арность len(inputs). |
**kwargs | ключевые слова для передачи в func(). Специальный ключевой параметр check_types не передается в func, а вместо этого определяет, должны ли типы итерируемых объектов внутри структур совпадать (например, map_structure(func, [1], (1,)) вызывает исключение TypeError). Чтобы разрешить это, установите этот параметр в False. |
| Исключения | |
|---|---|
TypeError | Если shallow_tree является последовательностью, но input_tree нет. |
TypeError | Если типы последовательностей shallow_tree отличаются от input_tree. |
ValueError | Если длины последовательностей shallow_tree отличаются от input_tree. |
| Возвращаемое значение | |
|---|---|
результат многократного применения func, с такой же структурой, как у shallow_tree. |
© 2020 The TensorFlow Authors. All rights reserved.
Licensed under the Creative Commons Attribution License 3.0.
Code samples licensed under the Apache 2.0 License.
https://www.tensorflow.org/versions/r1.15/api_docs/python/tf/contrib/framework/nest/map_structure_up_to