class_docstr: `LinearOperator` acting like a [batch] of Householder transformations.
  
  This operator acts like a [batch] of householder reflections with shape
  `[B1,...,Bb, N, N]` for some `b >= 0`.  The first `b` indices index a
  batch member.  For every batch index `(i1,...,ib)`, `A[i1,...,ib, : :]` is
  an `N x N` matrix.  This matrix `A` is not materialized, but for
  purposes of broadcasting this shape will be relevant.
  
  `LinearOperatorHouseholder` is initialized with a (batch) vector.
  
  A Householder reflection, defined via a vector `v`, which reflects points
  in `R^n` about the hyperplane orthogonal to `v` and through the origin.
  
  ```python
  # Create a 2 x 2 householder transform.
  vec = [1 / np.sqrt(2), 1. / np.sqrt(2)]
  operator = LinearOperatorHouseholder(vec)
  
  operator.to_dense()
  ==> [[0.,  -1.]
       [-1., -0.]]
  
  operator.shape
  ==> [2, 2]
  
  operator.log_abs_determinant()
  ==> scalar Tensor
  
  x = ... Shape [2, 4] Tensor
  operator.matmul(x)
  ==> Shape [2, 4] Tensor
  ```
  
  #### Shape compatibility
  
  This operator acts on [batch] matrix with compatible shape.
  `x` is a batch matrix with compatible shape for `matmul` and `solve` if
  
  ```
  operator.shape = [B1,...,Bb] + [N, N],  with b >= 0
  x.shape =   [C1,...,Cc] + [N, R],
  and [C1,...,Cc] broadcasts with [B1,...,Bb] to [D1,...,Dd]
  ```
  
  #### Matrix property hints
  
  This `LinearOperator` is initialized with boolean flags of the form `is_X`,
  for `X = non_singular, self_adjoint, positive_definite, square`.
  These have the following meaning:
  
  * If `is_X == True`, callers should expect the operator to have the
    property `X`.  This is a promise that should be fulfilled, but is *not* a
    runtime assert.  For example, finite floating point precision may result
    in these promises being violated.
  * If `is_X == False`, callers should expect the operator to not have `X`.
  * If `is_X == None` (the default), callers should have no expectation either
    way.
class_docstr_tok: ["`","LinearOperator","`","acting","like","a","[","batch","]","of","Householder","transformations",".","This","operator","acts","like","a","[","batch","]","of","householder","reflections","with","shape","`","[","B1",",","...",",","Bb",",","N",",","N","]","`","for","some","`","b",">","=","0","`",".","The","first","`","b","`","indices","index","a","batch","member",".","For","every","batch","index","`","(","i1",",","...",",","ib",")","`",",","`","A","[","i1",",","...",",","ib",",",":",":","]","`","is","an","`","N","x","N","`","matrix",".","This","matrix","`","A","`","is","not","materialized",",","but","for","purposes","of","broadcasting","this","shape","will","be","relevant",".","`","LinearOperatorHouseholder","`","is","initialized","with","a","(","batch",")","vector",".","A","Householder","reflection",",","defined","via","a","vector","`","v","`",",","which","reflects","points","in","`","R^n","`","about","the","hyperplane","orthogonal","to","`","v","`","and","through","the","origin",".","``","`","python","#","Create","a","2","x","2","householder","transform",".","vec","=","[","1","\/","np.sqrt","(","2",")",",","1",".","\/","np.sqrt","(","2",")","]","operator","=","LinearOperatorHouseholder","(","vec",")","operator.to_dense","(",")","==",">","[","[","0.",",","-1",".","]","[","-1.",",","-0",".","]","]","operator.shape","==",">","[","2",",","2","]","operator.log_abs_determinant","(",")","==",">","scalar","Tensor","x","=","...","Shape","[","2",",","4","]","Tensor","operator.matmul","(","x",")","==",">","Shape","[","2",",","4","]","Tensor","``","`","#","#","#","#","Shape","compatibility","This","operator","acts","on","[","batch","]","matrix","with","compatible","shape",".","`","x","`","is","a","batch","matrix","with","compatible","shape","for","`","matmul","`","and","`","solve","`","if","``","`","operator.shape","=","[","B1",",","...",",","Bb","]","+","[","N",",","N","]",",","with","b",">","=","0","x.shape","=","[","C1",",","...",",","Cc","]","+","[","N",",","R","]",",","and","[","C1",",","...",",","Cc","]","broadcasts","with","[","B1",",","...",",","Bb","]","to","[","D1",",","...",",","Dd","]","``","`","#","#","#","#","Matrix","property","hints","This","`","LinearOperator","`","is","initialized","with","boolean","flags","of","the","form","`","is_X","`",",","for","`","X","=","non_singular",",","self_adjoint",",","positive_definite",",","square","`",".","These","have","the","following","meaning",":","*","If","`","is_X","==","True","`",",","callers","should","expect","the","operator","to","have","the","property","`","X","`",".","This","is","a","promise","that","should","be","fulfilled",",","but","is","*","not","*","a","runtime","assert",".","For","example",",","finite","floating","point","precision","may","result","in","these","promises","being","violated",".","*","If","`","is_X","==","False","`",",","callers","should","expect","the","operator","to","not","have","`","X","`",".","*","If","`","is_X","==","None","`","(","the","default",")",",","callers","should","have","no","expectation","either","way","."]
code: def _log_abs_determinant(self):
      # Orthogonal matrix -> log|Q| = 0.
      return array_ops.zeros(
          shape=self.batch_shape_tensor(), dtype=self.dtype
      )
  
imports: from tensorflow.python.framework import errors
  from tensorflow.python.framework import ops
  from tensorflow.python.framework import tensor_conversion
  from tensorflow.python.ops import array_ops
  from tensorflow.python.ops import control_flow_ops
  from tensorflow.python.ops import math_ops
  from tensorflow.python.ops import nn
  from tensorflow.python.ops.linalg import linalg_impl
  from tensorflow.python.ops.linalg import linear_operator
  from tensorflow.python.ops.linalg import linear_operator_util
  from tensorflow.python.util.tf_export import tf_export
label_desc: Use image node_id 13 for calling the LinearOperatorHouseholder obj's underlying member method code with example usage: obj._log_abs_determinant() and returns: array_ops