断言两个结构以相同的方式嵌套。
用法
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.SparseTensor
和tf.RaggedTensor
)将扩展为它们的分量张量。
抛出
-
ValueError
如果两个结构的原子数不同,或者两个结构的嵌套方式不同。 -
TypeError
如果两个结构在其任何子结构中的序列类型不同。仅当check_types
为True
时才有可能。
有关结构的定义,请参阅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
相关用法
- Python tf.nest.is_nested用法及代码示例
- Python tf.nest.map_structure用法及代码示例
- Python tf.nest.flatten用法及代码示例
- Python tf.nest.pack_sequence_as用法及代码示例
- Python tf.nn.embedding_lookup_sparse用法及代码示例
- Python tf.nn.RNNCellResidualWrapper.set_weights用法及代码示例
- Python tf.nn.dropout用法及代码示例
- Python tf.nn.gelu用法及代码示例
- Python tf.nn.RNNCellDeviceWrapper.set_weights用法及代码示例
- Python tf.no_gradient用法及代码示例
- Python tf.nn.embedding_lookup用法及代码示例
- Python tf.numpy_function用法及代码示例
- Python tf.nn.RNNCellDeviceWrapper.get_weights用法及代码示例
- Python tf.nn.local_response_normalization用法及代码示例
- Python tf.nn.scale_regularization_loss用法及代码示例
- Python tf.nn.RNNCellResidualWrapper.add_loss用法及代码示例
- Python tf.nn.max_pool用法及代码示例
- Python tf.nn.RNNCellDropoutWrapper.set_weights用法及代码示例
- Python tf.nn.l2_loss用法及代码示例
- Python tf.nn.log_softmax用法及代码示例
注:本文由纯净天空筛选整理自tensorflow.org大神的英文原创作品 tf.nest.assert_same_structure。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。