Функция nest.map_structure
Функция nest.map_structure применяется к вложенной структуре данных,
такой как список, кортеж или словарь. Первым параметром функция принимает
вызываемую функцию, которая будет применена к каждому элементу структуры.
Вторым параметром передается сама вложенная структура. Дополнительные
структуры можно передать третьим, четвертым и последующими параметрами,
и тогда вызываемая функция должна принимать соответствующее число
аргументов.
Синтаксис
tf.nest.map_structure(func, *structure, **kwargs)
Пример
Давайте применим функцию lambda, умножающую число на два,
к каждому элементу вложенной структуры:
import tensorflow as tf
structure = [[1, 2], [3, 4]]
res = tf.nest.map_structure(lambda x: x * 2, structure)
print(res)
Результат выполнения кода:
[[2, 4], [6, 8]]
Пример
Давайте применим функцию к словарю, содержащему тензоры:
import tensorflow as tf
structure = {'a': tf.constant([1, 2, 3, 4, 5]), 'b': tf.constant([6, 7, 8, 9, 10])}
res = tf.nest.map_structure(lambda x: x + 1, structure)
print(res)
Результат выполнения кода:
{'a': <tf.Tensor: shape=(5,), dtype=int32, numpy=array([2, 3, 4, 5, 6], dtype=int32)>, 'b': <tf.Tensor: shape=(5,), dtype=int32, numpy=array([7, 8, 9, 10, 11], dtype=int32)>}
Пример
Давайте применим функцию к нескольким структурам одновременно:
import tensorflow as tf
s1 = [1, 2, 3]
s2 = [4, 5, 6]
res = tf.nest.map_structure(lambda x, y: x + y, s1, s2)
print(res)
Результат выполнения кода:
[5, 7, 9]
Пример
Давайте применим функцию к тензору внутри вложенной структуры:
import tensorflow as tf
structure = {'x': [tf.constant([[1, 2, 3], [4, 5, 6]]), tf.constant([1, 2, 3, 4, 5])]}
res = tf.nest.map_structure(lambda t: tf.reduce_sum(t), structure)
print(res)
Результат выполнения кода:
{'x': [<tf.Tensor: shape=(), dtype=int32, numpy=21>, <tf.Tensor: shape=(), dtype=int32, numpy=15>]}
Смотрите также
-
функцию
nest.flatten,
которая преобразует вложенную структуру в плоский список -
функцию
nest.pack_sequence_as,
которая упаковывает плоский список обратно в структуру -
функцию
nest.assert_same_structure,
которая проверяет совпадение структур -
функцию
nest.is_nested,
которая проверяет, является ли объект вложенной структурой