当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python tf.nest.assert_same_structure用法及代码示例


断言两个结构以相同的方式嵌套。

用法

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

参数

  • nest1 一个原子或嵌套结构。
  • nest2 一个原子或嵌套结构。
  • check_types 如果True(默认)结构类型也被检查,包括字典的键。如果设置为 False ,例如,如果对象的列表和元组具有相同的大小,它们将看起来相同。请注意,具有相同名称和字段的命名元组始终被认为具有相同的浅层结构。如果两个类型都是列表子类型,则它们也将被视为相同(这允许来自可跟踪依赖项跟踪的 "list" 和 "_ListWrapper" 比较相等)。 check_types=True 仅检查 sub-structures 的类型。不检查原子的类型。
  • expand_composites 如果为真,则复合张量(例如 tf.sparse.SparseTensortf.RaggedTensor)将扩展为它们的分量张量。

抛出

  • ValueError 如果两个结构的原子数不同,或者两个结构的嵌套方式不同。
  • TypeError 如果两个结构在其任何子结构中的序列类型不同。仅当 check_typesTrue 时才有可能。

有关结构的定义,请参阅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

相关用法


注:本文由纯净天空筛选整理自tensorflow.org大神的英文原创作品 tf.nest.assert_same_structure。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。