class_docstr: `LinearOperator` representing the adjoint of another operator.
  
  This operator represents the adjoint of another operator.
  
  ```python
  # Create a 2 x 2 linear operator.
  operator = LinearOperatorFullMatrix([[1 - i., 3.], [0., 1. + i]])
  operator_adjoint = LinearOperatorAdjoint(operator)
  
  operator_adjoint.to_dense()
  ==> [[1. + i, 0.]
       [3., 1 - i]]
  
  operator_adjoint.shape
  ==> [2, 2]
  
  operator_adjoint.log_abs_determinant()
  ==> - log(2)
  
  x = ... Shape [2, 4] Tensor
  operator_adjoint.matmul(x)
  ==> Shape [2, 4] Tensor, equal to operator.matmul(x, adjoint=True)
  ```
  
  #### Performance
  
  The performance of `LinearOperatorAdjoint` depends on the underlying
  operators performance.
  
  #### 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","`","representing","the","adjoint","of","another","operator",".","This","operator","represents","the","adjoint","of","another","operator",".","``","`","python","#","Create","a","2","x","2","linear","operator",".","operator","=","LinearOperatorFullMatrix","(","[","[","1","-","i.",",","3",".","]",",","[","0.",",","1",".","+","i","]","]",")","operator_adjoint","=","LinearOperatorAdjoint","(","operator",")","operator_adjoint.to_dense","(",")","==",">","[","[","1",".","+","i",",","0",".","]","[","3.",",","1","-","i","]","]","operator_adjoint.shape","==",">","[","2",",","2","]","operator_adjoint.log_abs_determinant","(",")","==",">","-","log","(","2",")","x","=","...","Shape","[","2",",","4","]","Tensor","operator_adjoint.matmul","(","x",")","==",">","Shape","[","2",",","4","]","Tensor",",","equal","to","operator.matmul","(","x",",","adjoint=True",")","``","`","#","#","#","#","Performance","The","performance","of","`","LinearOperatorAdjoint","`","depends","on","the","underlying","operators","performance",".","#","#","#","#","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):
      return self.operator.log_abs_determinant()
  
imports: from tensorflow.python.framework import ops
  from tensorflow.python.ops import array_ops
  from tensorflow.python.ops import math_ops
  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 12 for calling the LinearOperatorAdjoint obj's underlying member method code with example usage: obj._log_abs_determinant() and returns: self