code: def gradient_helper(optimizer, loss, var_list=None):
      '''A helper to get the gradients out at each step.
  
      Args:
        optimizer: the optimizer op.
        loss: the op that computes your loss value.
  
      Returns: the gradient tensors and the train_step op.
      '''
      if var_list is None:
        var_list = tf.compat.v1.trainable_variables()
  
      grads_and_vars = optimizer.compute_gradients(loss, var_list=var_list)
      grads = [pair[0] for pair in grads_and_vars]
  
      return grads, optimizer.apply_gradients(grads_and_varsf gradient_helper(optimizer, loss, var_list=None):
      '''A helper to get the gradients out at each step.
  
      Args:
        optimizer: the optimizer op.
        loss: the op that computes your loss value.
  
      Returns: the gradient tensors and the train_step op.
      '''
      if var_list is None:
        var_list = tf.compat.v1.trainable_variables()
  
      grads_and_vars = optimizer.compute_gradients(loss, var_list=var_list)
      grads = [pair[0] for pair in grads_and_vars]
  
      return grads, optimizer.apply_gradients(grads_and_vars)
docs: A helper to get the gradients out at each step.
  
      Args:
        optimizer: the optimizer op.
        loss: the op that computes your loss value.
  
      Returns: the gradient tensors and the train_step op.