docstr: :param y: the output of the bijection
  :type y: torch.Tensor
  
  Inverts y => x. The Householder transformation, H, is "involutory," i.e.
  H^2 = I. If you reflect a point around a plane, then the same operation will
  reflect it back
docstr_tok: [":","param","y",":","the","output","of","the","bijection",":","type","y",":","torch.Tensor","Inverts","y","=",">","x",".","The","Householder","transformation",",","H",",","is","``","involutory",",","''","i.e",".","H^2","=","I",".","If","you","reflect","a","point","around","a","plane",",","then","the","same","operation","will","reflect","it","back"]
code: def _inverse(self, y):
      """
      :param y: the output of the bijection
      :type y: torch.Tensor
  
      Inverts y => x. The Householder transformation, H, is "involutory," i.e.
      H^2 = I. If you reflect a point around a plane, then the same operation will
      reflect it back
      """
  
      x = y
      u = self.u()
      for jdx in reversed(range(u.size(-2))):
          # NOTE: Need to apply transforms in reverse order from forward operation!
          projection = (u[..., jdx, :] * x).sum(
              dim=-1, keepdim=True
          ) * u[..., jdx, :]
          x = x - 2.0 * projection
      return x
  
imports: import math
  import warnings
  from functools import partial
  import torch
  import torch.nn
  from torch.distributions import Transform, constraints
  from pyro.nn import DenseNN
  from ..conditional import ConditionalTransformModule
  from ..torch_transform import TransformModule
  from ..util import copy_docs_from
label_desc: Use image node_id 4 for calling the ConditionedHouseholder obj's underlying member method code with example usage: obj._inverse(y) and returns: x