code: def pack_range(key, packing, grad_vars, rng):
      
      to_pack = grad_vars[rng[0]:rng[1] + 1]
      members = []
      variables = []
      restore_shapes = []
      with tf.name_scope("pack"):
          for g, v in to_pack:
              variables.append(v)
              restore_shapes.append(g.shape)
              with tf.device(g.device):
                  members.append(tf.reshape(g, [-1]))
          packing[key] = GradPackTuple(
              indices=range(rng[0], rng[1] + 1),
              vars=variables,
              shapes=restore_shapes)
          with tf.device(members[0].device):
              return tf.concat(members, 0)
docs: Form the concatenation of a specified range of gradient tensors.
  
    Args:
      key: Value under which to store meta-data in packing that will be used
        later to restore the grad_var list structure.
      packing: Dict holding data describing packed ranges of small tensors.
      grad_vars: List of (grad, var) pairs for one tower.
      rng: A pair of integers giving the first, last indices of a consecutive
        range of tensors to be packed.
  
    Returns:
      A tensor that is the concatenation of all the specified small tensors.