class_docstr: Vanilla Gradient Descent TensorOptimizer.
code: def _apply_gradients(self, grads, x, optim_state):
      new_x = [None] * len(x)
      for i in xrange(len(x)):
          new_x[i] = x[i] - self._lr * grads[i]
      return new_x, optim_state
  
imports: import warnings
  import numpy
  from six.moves import xrange
  import tensorflow
  import tensorflow_addons
  from cleverhans.attacks.attack import Attack
  from cleverhans.compat import reduce_mean, reduce_sum, reduce_max
  from cleverhans.model import Model
  from cleverhans import utils_tf
label_desc: Use image node_id 3 for calling the TensorGradientDescent obj's underlying member method code with example usage: obj._apply_gradients(grads, x, optim_state) and returns: new_x,  optim_state