tf.contrib.framework.nest.flatten_up_to
Разворачивает input_tree до shallow_tree.
tf.contrib.framework.nest.flatten_up_to(
shallow_tree, input_tree, check_types=True, expand_composites=False,
check_subtrees_length=True
)
Любая дальнейшая глубина структуры в 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_up_to(shallow_tree, input_tree) flattened_shallow_tree = flatten_up_to(shallow_tree, shallow_tree) # Output is: # [[2, 2], [3, 3], [4, 9], [5, 5]] # [True, True, False, 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:
# [('a', 1), ('b', 2), ('c', 3), ('d', 4)]
# ['a', 1, 'b', 2, 'c', 3, 'd', 4]
Случаи с не-последовательностями:
flatten_up_to(0, 0) # Output: [0] flatten_up_to(0, [0, 1, 2]) # Output: [[0, 1, 2]] flatten_up_to([0, 1, 2], 0) # Output: TypeError flatten_up_to([0, 1, 2], [0, 1, 2]) # Output: [0, 1, 2]
Случай неполного поддерева:
shallow_tree = ["a", "b"] input_tree = ["c", ["d", "e"], "f"] flattened = flatten_up_to(shallow_tree, input_tree, check_subtrees_length=False) # Output is: # ["c", ["d", "e"]]
| Аргументы | |
|---|---|
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_up_to