Функция nest.assert_same_structure
Функция nest.assert_same_structure проверяет,
что две переданные вложенные структуры имеют
одинаковое строение. Первым параметром передается
первая структура, вторым - вторая структура.
Третьим необязательным параметром можно передать
флаг check_types, который включает проверку
типов элементов. Если структуры различаются,
функция возбуждает исключение ValueError.
Если структуры совпадают, функция ничего не возвращает.
Синтаксис
tf.nest.assert_same_structure(nest1, nest2, [check_types])
Пример
Давайте проверим, что две одинаковые структуры из списка и словаря совпадают:
import tensorflow as tf
nest1 = [tf.constant([1, 2, 3]), {'a': tf.constant([4, 5, 6])}]
nest2 = [tf.constant([[1, 2, 3]]), {'a': tf.constant([[4, 5, 6]])}]
tf.nest.assert_same_structure(nest1, nest2)
print("structures are the same")
Результат выполнения кода:
"structures are the same"
Пример
Давайте попробуем сравнить структуры разного строения и увидим возбужденное исключение:
import tensorflow as tf
nest1 = [tf.constant([1, 2, 3]), tf.constant([4, 5, 6])]
nest2 = (tf.constant([1, 2, 3]), tf.constant([4, 5, 6]))
try:
tf.nest.assert_same_structure(nest1, nest2)
print("structures are the same")
except ValueError as e:
print("ValueError:", e)
Результат выполнения кода:
ValueError: The two structures don't have the same nested structure.
Пример
Давайте передадим третий параметр check_types=True,
чтобы дополнительно проверить типы вложенных элементов:
import tensorflow as tf
nest1 = {'a': tf.constant([1, 2, 3]), 'b': [tf.constant([4, 5, 6])]}
nest2 = {'a': tf.constant([[1, 2, 3]]), 'b': [tf.constant([[4, 5, 6]])]}
tf.nest.assert_same_structure(nest1, nest2, check_types=True)
print("structures and types are the same")
Результат выполнения кода:
"structures and types are the same"
Смотрите также
-
функцию
nest.map_structure,
которая применяет функцию к каждому элементу структуры -
функцию
nest.flatten,
которая разворачивает вложенную структуру в плоский список -
функцию
nest.pack_sequence_as,
которая упаковывает плоский список обратно в структуру -
функцию
nest.is_nested,
которая проверяет, является ли объект вложенной структурой