parameters: (self,
                 operators,
                 is_non_singular=None,
                 is_self_adjoint=None,
                 is_positive_definite=None,
                 is_square=None,
                 name=None)
docstring: r"""Initialize a `LinearOperatorComposition`.
  
      `LinearOperatorComposition` is initialized with a list of operators
      `[op_1,...,op_J]`.  For the `matmul` method to be well defined, the
      composition `op_i.matmul(op_{i+1}(x))` must be defined.  Other methods have
      similar constraints.
  
      Args:
        operators:  Iterable of `LinearOperator` objects, each with
          the same `dtype` and composable shape.
        is_non_singular:  Expect that this operator is non-singular.
        is_self_adjoint:  Expect that this operator is equal to its hermitian
          transpose.
        is_positive_definite:  Expect that this operator is positive definite,
          meaning the quadratic form `x^H A x` has positive real part for all
          nonzero `x`.  Note that we do not require the operator to be
          self-adjoint to be positive-definite.  See:
          https://en.wikipedia.org/wiki/Positive-definite_matrix\
              #Extension_for_non_symmetric_matrices
        is_square:  Expect that this operator acts like square [batch] matrices.
        name: A name for this `LinearOperator`.  Default is the individual
          operators names joined with `_o_`.
  
      Raises:
        TypeError:  If all operators do not have the same `dtype`.
        ValueError:  If `operators` is empty.
docstring_summary: r"""Initialize a `LinearOperatorComposition`.
docstring_tokens: r Initialize a LinearOperatorComposition .
function: def __init__(self,
                 operators,
                 is_non_singular=None,
                 is_self_adjoint=None,
                 is_positive_definite=None,
                 is_square=None,
                 name=None):
      r"""Initialize a `LinearOperatorComposition`.
  
      `LinearOperatorComposition` is initialized with a list of operators
      `[op_1,...,op_J]`.  For the `matmul` method to be well defined, the
      composition `op_i.matmul(op_{i+1}(x))` must be defined.  Other methods have
      similar constraints.
  
      Args:
        operators:  Iterable of `LinearOperator` objects, each with
          the same `dtype` and composable shape.
        is_non_singular:  Expect that this operator is non-singular.
        is_self_adjoint:  Expect that this operator is equal to its hermitian
          transpose.
        is_positive_definite:  Expect that this operator is positive definite,
          meaning the quadratic form `x^H A x` has positive real part for all
          nonzero `x`.  Note that we do not require the operator to be
          self-adjoint to be positive-definite.  See:
          https://en.wikipedia.org/wiki/Positive-definite_matrix\
              #Extension_for_non_symmetric_matrices
        is_square:  Expect that this operator acts like square [batch] matrices.
        name: A name for this `LinearOperator`.  Default is the individual
          operators names joined with `_o_`.
  
      Raises:
        TypeError:  If all operators do not have the same `dtype`.
        ValueError:  If `operators` is empty.
      """
      # Validate operators.
      check_ops.assert_proper_iterable(operators)
      operators = list(operators)
      if not operators:
        raise ValueError(
            "Expected a non-empty list of operators. Found: %s" % operators)
      self._operators = operators
  
      # Validate dtype.
      dtype = operators[0].dtype
      for operator in operators:
        if operator.dtype != dtype:
          name_type = (str((o.name, o.dtype)) for o in operators)
          raise TypeError(
              "Expected all operators to have the same dtype.  Found %s"
              % "   ".join(name_type))
  
      # Auto-set and check hints.
      if all(operator.is_non_singular for operator in operators):
        if is_non_singular is False:
          raise ValueError(
              "The composition of non-singular operators is always non-singular.")
        is_non_singular = True
  
      # Initialization.
      graph_parents = []
      for operator in operators:
        graph_parents.extend(operator.graph_parents)
  
      if name is None:
        name = "_o_".join(operator.name for operator in operators)
      with ops.name_scope(name, values=graph_parents):
        super(LinearOperatorComposition, self).__init__(
            dtype=dtype,
            graph_parents=graph_parents,
            is_non_singular=is_non_singular,
            is_self_adjoint=is_self_adjoint,
            is_positive_definite=is_positive_definite,
            is_square=is_square,
            name=name)
function_tokens: def __init__ ( self , operators , is_non_singular = None , is_self_adjoint = None , is_positive_definite = None , is_square = None , name = None ) : # Validate operators. check_ops . assert_proper_iterable ( operators ) operators = list ( operators ) if not operators : raise ValueError ( "Expected a non-empty list of operators. Found: %s" % operators ) self . _operators = operators # Validate dtype. dtype = operators [ 0 ] . dtype for operator in operators : if operator . dtype != dtype : name_type = ( str ( ( o . name , o . dtype ) ) for o in operators ) raise TypeError ( "Expected all operators to have the same dtype.  Found %s" % "   " . join ( name_type ) ) # Auto-set and check hints. if all ( operator . is_non_singular for operator in operators ) : if is_non_singular is False : raise ValueError ( "The composition of non-singular operators is always non-singular." ) is_non_singular = True # Initialization. graph_parents = [ ] for operator in operators : graph_parents . extend ( operator . graph_parents ) if name is None : name = "_o_" . join ( operator . name for operator in operators ) with ops . name_scope ( name , values = graph_parents ) : super ( LinearOperatorComposition , self ) . __init__ ( dtype = dtype , graph_parents = graph_parents , is_non_singular = is_non_singular , is_self_adjoint = is_self_adjoint , is_positive_definite = is_positive_definite , is_square = is_square , name = name )