斷言兩個結構以相同的方式嵌套。
用法
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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。