Spec-Zone.ru › TensorFlow 1.15

tf.contrib.framework.nest.flatten_with_tuple_paths_up_to

Разворачивает input_tree до shallow_tree.

tf.contrib.framework.nest.flatten_with_tuple_paths_up_to(
    shallow_tree, input_tree, check_types=True, expand_composites=False,
    check_subtrees_length=True
)

Любая дальнейшая глубина структуры в input_tree сохраняется как элементы в частично развернутом выходе.

Возвращает список пар (путь, значение), где значение — это листовой узел в развернутом дереве, а путь — кортеж пути этого листа в input_tree.

Если shallow_tree и input_tree не являются последовательностями, это возвращает список с одним элементом: [((), input_tree)].

Случай использования:

Иногда мы можем захотеть частично развернуть вложенную последовательность, сохраняя часть вложенной структуры. Мы достигаем этого, указав неглубокую структуру shallow_tree, до которой мы хотим развернуть.

Вход input_tree можно рассматривать как имеющий ту же структуру расположения, что и shallow_tree, но с листовыми узлами, которые сами являются структурами деревьев.

Примеры:

input_tree = [[[2, 2], [3, 3]], [[4, 9], [5, 5]]]
shallow_tree = [[True, True], [False, True]]

flattened_input_tree = flatten_with_tuple_paths_up_to(shallow_tree,
                                                      input_tree)
flattened_shallow_tree = flatten_with_tuple_paths_up_to(shallow_tree,
                                                        shallow_tree)

# Output is:
# [((0, 0), [2, 2]),
#  ((0, 1), [3, 3]),
#  ((1, 0), [4, 9]),
#  ((1, 1), [5, 5])]
#
# [((0, 0), True),
#  ((0, 1), True),
#  ((1, 0), False),
#  ((1, 1), True)]
input_tree = [[('a', 1), [('b', 2), [('c', 3), [('d', 4)]]]]]
shallow_tree = [['level_1', ['level_2', ['level_3', ['level_4']]]]]

input_tree_flattened_as_shallow_tree = flatten_up_to(shallow_tree, input_tree)
input_tree_flattened = flatten(input_tree)

# Output is:
# [((0, 0), ('a', 1)),
#  ((0, 1, 0), ('b', 2)),
#  ((0, 1, 1, 0), ('c', 3)),
#  ((0, 1, 1, 1), ('d', 4))]
# ['a', 1, 'b', 2, 'c', 3, 'd', 4]

Случаи исключения для не последовательностей:

flatten_with_tuple_paths_up_to(0, 0)  # Output: [(), 0]

flatten_with_tuple_paths_up_to(0, [0, 1, 2])  # Output: [(), [0, 1, 2]]

flatten_with_tuple_paths_up_to([0, 1, 2], 0)  # Output: TypeError

flatten_with_tuple_paths_up_to([0, 1, 2], [0, 1, 2])
# Output: [((0,) 0), ((1,), 1), ((2,), 2)]
Аргументы
shallow_tree возможная усеченная структура input_tree.
input_tree произвольно вложенная структура или скалярный объект. Обратите внимание, что массивы numpy считаются скалярами.
check_types bool. Если True, проверяется, что каждый узел в shallow_tree имеет тот же тип, что и соответствующий узел в input_tree.
expand_composites Если true, составные тензоры, такие как tf.SparseTensor и tf.RaggedTensor, расширяются до своих составных тензоров.
check_subtrees_length если True (по умолчанию) поддеревья shallow_tree и input_tree должны иметь одинаковую длину. Если False последовательности рассматриваются как отображения типа ключ-значение, позволяющие рассматривать их как допустимые поддеревья. Обратите внимание, что это может привести к потере частей input_tree.
Возвращаемое значение
Список Python, частично развернутая версия input_tree в соответствии со структурой shallow_tree.
Исключения
TypeError Если shallow_tree — последовательность, а input_tree — нет.
TypeError Если типы последовательностей shallow_tree отличаются от input_tree.
ValueError Если длины последовательностей shallow_tree отличаются от input_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/flatten_with_tuple_paths_up_to

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API