def original(self, transformed): """Return the original op/tensor corresponding to the transformed one. Note that the output of this function mimics the hierarchy of its input argument `transformed`. Given an iterable, it returns a list. Given an operation or a tensor, it will return an operation or a tensor. Args: transformed: the transformed tensor/operation. Returns: the original tensor/operation (or None if no match is found). """ return util.transform_tree(transformed, self._original_elem)
def original(self, transformed, missing_fn=None): """Return the original op/tensor corresponding to the transformed one. Note that the output of this function mimics the hierarchy of its input argument `transformed`. Given an iterable, it returns a list. Given an operation or a tensor, it will return an operation or a tensor. Args: transformed: the transformed tensor/operation. missing_fn: function handling the case where the counterpart cannot be found. By default, None is returned. Returns: the original tensor/operation (or None if no match is found). """ original_elem = partial(self._original_elem, missing_fn=missing_fn) return util.transform_tree(transformed, original_elem)