Модуль: tf.nest
Функции, работающие со структурами.
Структура — это:
- один из распознанных Python-коллекций, содержащих вложенные структуры;
- значение любого другого типа, обычно тип данных TensorFlow, например, Tensor, Variable или совместимые типы, такие как int, float, ndarray и т. д. Их часто называют атомами структуры.
Структура типа T — это структура, атомарные элементы которой имеют тип T. Например, структура типа tf.Tensor содержит только tf.Tensor в качестве своих атомов.
Исторически вложенная структура в TensorFlow называлась вложенной последовательностью. Вложенная структура иногда называется гнездом или деревом, но предпочтительное формальное название — вложенная структура.
См. Вложенные структуры данных.
Следующие типы коллекций распознаются tf.nest как вложенные структуры:
-
collections.abc.Sequence(кромеstringиbytes). Это включаетlist,tuple, иnamedtuple. -
collections.abc.Mapping(с сортируемыми ключами). Это включаетdictиcollections.OrderedDict. -
collections.abc.MappingView(с сортируемыми ключами). -
attr.sклассы.
Любые другие значения считаются атомами. Не все типы коллекций считаются вложенными структурами. Например, следующие типы считаются атомами:
-
set;{"a", "b"}— это атом, а["a", "b"]— вложенная структура. dataclassклассыtf.Tensornumpy.array
tf.nest.is_nested проверяет, является ли объект вложенной структурой или атомом. Например:
tf.nest.is_nested("1234")
False
tf.nest.is_nested([1, 3, [4, 5]])
True
tf.nest.is_nested(((7, 8), (5, 6)))
True
tf.nest.is_nested([])
True
tf.nest.is_nested({"a": 1, "b": 2})
True
tf.nest.is_nested({"a": 1, "b": 2}.keys())
True
tf.nest.is_nested({"a": 1, "b": 2}.values())
True
tf.nest.is_nested({"a": 1, "b": 2}.items())
True
tf.nest.is_nested(set([1, 2]))
False
ones = tf.ones([2, 3])
tf.nest.is_nested(ones)
False
Примечание: Правильная структура должна образовывать дерево. Пользователь должен убедиться, что в структуре нет циклических ссылок между элементами, то есть в структуре входных данных этих функций не должно быть рекурсивных ссылок. Поведение неопределено, если цикл присутствует.
Функции
assert_same_structure(...): Проверяет, что две структуры вложены одинаково.
flatten(...): Возвращает плоский список из заданной структуры.
is_nested(...): Возвращает true, если входной параметр — это вложенная структура.
map_structure(...): Создает новую структуру, применяя func к каждому атому в structure.
pack_sequence_as(...): Возвращает заданную уплощенную последовательность, упакованную в заданную структуру.
© 2022 The TensorFlow Authors. All rights reserved.
Licensed under the Creative Commons Attribution License 4.0.
Code samples licensed under the Apache 2.0 License.
https://www.tensorflow.org/versions/r2.9/api_docs/python/tf/nest