![]() |
Asserts that shallow_tree
is a shallow structure of input_tree
.
tf.contrib.framework.nest.assert_shallow_structure(
shallow_tree,
input_tree,
check_types=True,
expand_composites=False,
check_subtrees_length=True
)
That is, this function tests if the input_tree
structure can be created from
the shallow_tree
structure by replacing its leaf nodes with deeper
tree structures.
Examples:
The following code will raise an exception:
shallow_tree = {"a": "A", "b": "B"}
input_tree = {"a": 1, "c": 2}
assert_shallow_structure(shallow_tree, input_tree)
The following code will raise an exception:
shallow_tree = ["a", "b"]
input_tree = ["c", ["d", "e"], "f"]
assert_shallow_structure(shallow_tree, input_tree)
The following code will not raise an exception:
shallow_tree = ["a", "b"]
input_tree = ["c", ["d", "e"], "f"]
assert_shallow_structure(shallow_tree, input_tree,
check_subtrees_length=False)
Args:
shallow_tree
: an arbitrarily nested structure.input_tree
: an arbitrarily nested structure.check_types
: ifTrue
(default) the sequence types ofshallow_tree
andinput_tree
have to be the same. Note that even with check_types==True, this function will consider two different namedtuple classes with the same name and _fields attribute to be the same class.expand_composites
: If true, then composite tensors such as tf.SparseTensor and tf.RaggedTensor are expanded into their component tensors.check_subtrees_length
: ifTrue
(default) the subtreesshallow_tree
andinput_tree
have to be the same length. IfFalse
sequences are treated as key-value like mappings allowing them to be considered as valid subtrees. Note that this may drop parts of theinput_tree
.
Raises:
TypeError
: Ifshallow_tree
is a sequence butinput_tree
is not.TypeError
: If the sequence types ofshallow_tree
are different frominput_tree
. Only raised ifcheck_types
isTrue
.ValueError
: If the sequence lengths ofshallow_tree
are different frominput_tree
.