class_docstr: Base class of solver.
class_docstr_tok: ["Base","class","of","solver","."]
docstr: Get Apply gradients operator.
docstr_tok: ["Get","Apply","gradients","operator","."]
code: def get_apply_gradients_op(self, loss, global_step=None):
      """Get Apply gradients operator."""
      opt = self.get_optimizer()
      grads_and_vars = opt.compute_gradients(loss)
  
      # clip gradient
      optconf = self.config["solver"]["optimizer"]
      global_norm = optconf["clip_global_norm"]
      grads_and_vars = self.clip_gradients(grads_and_vars, global_norm)
  
      apply_gradient_op = opt.apply_gradients(
          grads_and_vars,
          global_step=global_step
          or tf.train.get_or_create_global_step(),
      )
      return apply_gradient_op
  
imports: import abc
  import math
  import delta.compat
  import tensorflow_addons
  from absl import logging
  from delta import utils
  from delta.utils import optimizer
  from delta.utils.register import registers
label_desc: Use image node_id 10 for calling the Solver obj's underlying member method code with example usage: obj.get_apply_gradients_op(loss, global_step) and returns: apply_gradient_op