parameters: (self,
                 operator,
                 v,
                 diag=None,
                 verify_pd=True,
                 verify_shapes=True,
                 name="OperatorPDSqrtVDVTUpdate")
docstring: Initialize an `OperatorPDSqrtVDVTUpdate`.
  
      Args:
        operator:  Subclass of `OperatorPDBase`.  Represents the (batch) positive
          definite matrix `M` in `R^{k x k}`.
        v: `Tensor` defining batch matrix of same `dtype` and `batch_shape` as
          `operator`, and last two dimensions of shape `(k, r)`.
        diag:  Optional `Tensor` defining batch vector of same `dtype` and
          `batch_shape` as `operator`, and last dimension of size `r`.  If `None`,
          the update becomes `VV^T` rather than `VDV^T`.
        verify_pd:  `Boolean`.  If `True`, add asserts that `diag > 0`, which,
          along with the positive definiteness of `operator`, is sufficient to
          make the resulting operator positive definite.
        verify_shapes:  `Boolean`.  If `True`, check that `operator`, `v`, and
          `diag` have compatible shapes.
        name:  A name to prepend to `Op` names.
docstring_summary: Initialize an `OperatorPDSqrtVDVTUpdate`.
docstring_tokens: Initialize an OperatorPDSqrtVDVTUpdate .
function: def __init__(self,
                 operator,
                 v,
                 diag=None,
                 verify_pd=True,
                 verify_shapes=True,
                 name="OperatorPDSqrtVDVTUpdate"):
      """Initialize an `OperatorPDSqrtVDVTUpdate`.
  
      Args:
        operator:  Subclass of `OperatorPDBase`.  Represents the (batch) positive
          definite matrix `M` in `R^{k x k}`.
        v: `Tensor` defining batch matrix of same `dtype` and `batch_shape` as
          `operator`, and last two dimensions of shape `(k, r)`.
        diag:  Optional `Tensor` defining batch vector of same `dtype` and
          `batch_shape` as `operator`, and last dimension of size `r`.  If `None`,
          the update becomes `VV^T` rather than `VDV^T`.
        verify_pd:  `Boolean`.  If `True`, add asserts that `diag > 0`, which,
          along with the positive definiteness of `operator`, is sufficient to
          make the resulting operator positive definite.
        verify_shapes:  `Boolean`.  If `True`, check that `operator`, `v`, and
          `diag` have compatible shapes.
        name:  A name to prepend to `Op` names.
      """
  
      if not isinstance(operator, operator_pd.OperatorPDBase):
        raise TypeError("operator was not instance of OperatorPDBase.")
  
      with ops.name_scope(name):
        with ops.name_scope("init", values=operator.inputs + [v, diag]):
          self._operator = operator
          self._v = ops.convert_to_tensor(v, name="v")
          self._verify_pd = verify_pd
          self._verify_shapes = verify_shapes
          self._name = name
  
          # This operator will be PD so long as the diag is PSD, but Woodbury
          # and determinant lemmas require diag to be PD.  So require diag PD
          # whenever we ask to "verify_pd".
          if diag is not None:
            self._diag = ops.convert_to_tensor(diag, name="diag")
            self._diag_operator = operator_pd_diag.OperatorPDDiag(
                diag, verify_pd=self.verify_pd)
            # No need to verify that the inverse of a PD is PD.
            self._diag_inv_operator = operator_pd_diag.OperatorPDDiag(
                1 / self._diag, verify_pd=False)
          else:
            self._diag = None
            self._diag_operator = self._get_identity_operator(self._v)
            self._diag_inv_operator = self._diag_operator
  
          self._check_types(operator, self._v, self._diag)
          # Always check static.
          checked = self._check_shapes_static(operator, self._v, self._diag)
          if not checked and self._verify_shapes:
            self._v, self._diag = self._check_shapes_dynamic(
                operator, self._v, self._diag)
function_tokens: def __init__ ( self , operator , v , diag = None , verify_pd = True , verify_shapes = True , name = "OperatorPDSqrtVDVTUpdate" ) : if not isinstance ( operator , operator_pd . OperatorPDBase ) : raise TypeError ( "operator was not instance of OperatorPDBase." ) with ops . name_scope ( name ) : with ops . name_scope ( "init" , values = operator . inputs + [ v , diag ] ) : self . _operator = operator self . _v = ops . convert_to_tensor ( v , name = "v" ) self . _verify_pd = verify_pd self . _verify_shapes = verify_shapes self . _name = name # This operator will be PD so long as the diag is PSD, but Woodbury # and determinant lemmas require diag to be PD.  So require diag PD # whenever we ask to "verify_pd". if diag is not None : self . _diag = ops . convert_to_tensor ( diag , name = "diag" ) self . _diag_operator = operator_pd_diag . OperatorPDDiag ( diag , verify_pd = self . verify_pd ) # No need to verify that the inverse of a PD is PD. self . _diag_inv_operator = operator_pd_diag . OperatorPDDiag ( 1 / self . _diag , verify_pd = False ) else : self . _diag = None self . _diag_operator = self . _get_identity_operator ( self . _v ) self . _diag_inv_operator = self . _diag_operator self . _check_types ( operator , self . _v , self . _diag ) # Always check static. checked = self . _check_shapes_static ( operator , self . _v , self . _diag ) if not checked and self . _verify_shapes : self . _v , self . _diag = self . _check_shapes_dynamic ( operator , self . _v , self . _diag )