Same as tf.nest.assert_same_structure but with cleaner error messages.

nest1 an arbitrarily nested structure.
nest2 an arbitrarily nested structure.
check_types if True (default) types of sequences are checked as well, including the keys of dictionaries. If set to False, for example a list and a tuple of objects will look the same if they have the same size. Note that namedtuples with identical name and fields are always considered to have the same shallow structure. Two types will also be considered the same if they are both list subtypes (which allows "list" and "_ListWrapper" from trackable dependency tracking to compare equal).
expand_composites If true, then composite tensors such as tf.SparseTensor and tf.RaggedTensor are expanded into their component tensors.
allow_shallow_nest1 If True, nest1 is allowed to be more shallow than nest2.
message Optional error message to provide in case of failure.

ValueError If the two structures do not have the same number of elements or if the two structures are not nested in the same way.
TypeError If the two structures differ in the type of sequence in any of their substructures. Only possible if check_types is True.