docstr: ivy.Array instance method variant of ivy.gradient_descent_update.
  This method simply wraps the function, and so the docstring for
  ivy.gradient_descent_update also applies to this method with minimal
  changes.
  
  Parameters
  ----------
  self
      Weights of the function to be updated.
  dcdw
      Derivates of the cost c with respect to the weights ws, [dc/dw for w in ws].
  lr
      Learning rate(s), the rate(s) at which the weights should be
      updated relative to the gradient.
  stop_gradients
      Whether to stop the gradients of the variables after each gradient step.
      Default is ``True``.
  out
      optional output array, for writing the result to. It must have a shape that
      the inputs broadcast to.
  
  Returns
  -------
  ret
      The new weights, following the gradient descent updates.
  
  Examples
  --------
  With :class:`ivy.Array` inputs:
  
  >>> w = ivy.array([[1., 2, 3],
  ...                [4, 6, 1],
  ...                [1, 0, 7]])
  >>> dcdw = ivy.array([[0.5, 0.2, 0.1],
  ...                   [0.3, 0.6, 0.4],
  ...                   [0.4, 0.7, 0.2]])
  >>> lr = ivy.array(0.1)
  >>> new_weights = w.gradient_descent_update(dcdw, lr, stop_gradients = True)
  >>> print(new_weights)
  ivy.array([[ 0.95,  1.98,  2.99],
  ...        [ 3.97,  5.94,  0.96],
  ...        [ 0.96, -0.07,  6.98]])
code: def gradient_descent_update(
      self: ivy.Array,
      dcdw: Union[ivy.Array, ivy.NativeArray],
      lr: Union[float, ivy.Array, ivy.NativeArray],
      /,
      *,
      stop_gradients: bool = True,
      out: Optional[ivy.Array] = None,
  ) -> ivy.Array:
      """ivy.Array instance method variant of ivy.gradient_descent_update.
      This method simply wraps the function, and so the docstring for
      ivy.gradient_descent_update also applies to this method with minimal
      changes.
  
      Parameters
      ----------
      self
          Weights of the function to be updated.
      dcdw
          Derivates of the cost c with respect to the weights ws, [dc/dw for w in ws].
      lr
          Learning rate(s), the rate(s) at which the weights should be
          updated relative to the gradient.
      stop_gradients
          Whether to stop the gradients of the variables after each gradient step.
          Default is ``True``.
      out
          optional output array, for writing the result to. It must have a shape that
          the inputs broadcast to.
  
      Returns
      -------
      ret
          The new weights, following the gradient descent updates.
  
      Examples
      --------
      With :class:`ivy.Array` inputs:
  
      >>> w = ivy.array([[1., 2, 3],
      ...                [4, 6, 1],
      ...                [1, 0, 7]])
      >>> dcdw = ivy.array([[0.5, 0.2, 0.1],
      ...                   [0.3, 0.6, 0.4],
      ...                   [0.4, 0.7, 0.2]])
      >>> lr = ivy.array(0.1)
      >>> new_weights = w.gradient_descent_update(dcdw, lr, stop_gradients = True)
      >>> print(new_weights)
      ivy.array([[ 0.95,  1.98,  2.99],
      ...        [ 3.97,  5.94,  0.96],
      ...        [ 0.96, -0.07,  6.98]])
      """
      return ivy.gradient_descent_update(
          self, dcdw, lr, stop_gradients=stop_gradients, out=out
      )
  
file_path: ivy/ivy/data_classes/array/gradients.py
imports: import abc
  from typing import Union, Optional
  import ivy
label_desc: Use image node_id 4 for calling the _ArrayWithGradients obj's underlying member method code with example usage: obj.gradient_descent_update() and returns: ivy