Spec-Zone.ru › TensorFlow

tf.nest.assert_same_structure

Проверяет, что две структуры вложены одинаковым образом.

Просмотр псевдонимов

Псевдонимы для миграции

См. Руководство по миграции для получения дополнительной информации.

tf.compat.v1.nest.assert_same_structure

tf.nest.assert_same_structure(
    nest1, nest2, check_types=True, expand_composites=False
)

Обратитесь к tf.nest для определения структуры.

Обратите внимание, что метод не проверяет типы атомов внутри структур.

Примеры:

  • Эти сравнения атом-атом пройдут:

    tf.nest.assert_same_structure(1.5, tf.Variable(1, tf.uint32))
    tf.nest.assert_same_structure("abc", np.array([1, 2]))
      
  • Эти сравнения вложенных структур пройдут:

    structure1 = (((1, 2), 3), 4, (5, 6))
    structure2 = ((("foo1", "foo2"), "foo3"), "foo4", ("foo5", "foo6"))
    structure3 = [(("a", "b"), "c"), "d", ["e", "f"]]
    tf.nest.assert_same_structure(structure1, structure2)
    tf.nest.assert_same_structure(structure1, structure3, check_types=False)
      
    import collections
    tf.nest.assert_same_structure(
        collections.namedtuple("bar", "a b")(1, 2),
        collections.namedtuple("foo", "a b")(2, 3),
        check_types=False)
      
    tf.nest.assert_same_structure(
        collections.namedtuple("bar", "a b")(1, 2),
        { "a": 1, "b": 2 },
        check_types=False)
      
    tf.nest.assert_same_structure(
        { "a": 1, "b": 2, "c": 3 },
        { "c": 6, "b": 5, "a": 4 })
      
    ragged_tensor1 = tf.RaggedTensor.from_row_splits(
          values=[3, 1, 4, 1, 5, 9, 2, 6],
          row_splits=[0, 4, 4, 7, 8, 8])
    ragged_tensor2 = tf.RaggedTensor.from_row_splits(
          values=[3, 1, 4],
          row_splits=[0, 3])
    tf.nest.assert_same_structure(
          ragged_tensor1,
          ragged_tensor2,
          expand_composites=True)
      
  • Эти примеры приведут к исключениям:

    tf.nest.assert_same_structure([0, 1], np.array([0, 1]))
      Traceback (most recent call last):
    
      ValueError: The two structures don't have the same nested structure
      
    tf.nest.assert_same_structure(
          collections.namedtuple('bar', 'a b')(1, 2),
          collections.namedtuple('foo', 'a b')(2, 3))
      Traceback (most recent call last):
    
      TypeError: The two structures don't have the same nested structure
      
Аргументы
nest1 атом или вложенная структура.
nest2 атом или вложенная структура.
check_types если True (по умолчанию) типы структур также проверяются, включая ключи словарей. Если установлено значение False, например, список и кортеж объектов будут выглядеть одинаково, если у них одинаковый размер. Обратите внимание, что именованные кортежи с идентичным именем и полями всегда считаются имеющими одинаковую поверхностную структуру. Два типа также будут считаться одинаковыми, если оба являются подтипами списка (что позволяет сравнивать "list" и "_ListWrapper" из отслеживания зависимостей trackable равными). check_types=True проверяет только тип подструктур. Типы атомов не проверяются.
expand_composites Если значение true, то составные тензоры, такие как tf.sparse.SparseTensor и tf.RaggedTensor, расширяются до составляющих тензоров.
Исключения
ValueError Если у двух структур разное количество атомов или если две структуры не вложены одинаковым образом.
TypeError Если у двух структур различается тип последовательности в любой из их подструктур. Это возможно только если check_types равно True.

© 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/api_docs/python/tf/nest/assert_same_structure

Spec-Zone.ru

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