code: def test_sparse_adagrad_empty(self, inputs, lr, epsilon, gc, dc):
      param, momentum = inputs
      grad = np.empty(shape=(0,) + param.shape[1:], dtype=np.float32)
  
      ref_using_fp16_values = [False]
      if gc == hu.gpu_do:
          ref_using_fp16_values.append(True)
  
      for ref_using_fp16 in ref_using_fp16_values:
          if ref_using_fp16:
              print(
                  "test_sparse_adagrad_empty with half precision embedding"
              )
              momentum_i = momentum.astype(np.float16)
              param_i = param.astype(np.float16)
          else:
              print(
                  "test_sparse_adagrad_empty with full precision embedding"
              )
              momentum_i = momentum.astype(np.float32)
              param_i = param.astype(np.float32)
  
          adagrad_sparse_test_helper(
              self,
              [param_i, momentum_i, grad],
              lr,
              epsilon,
              None,
              ref_adagrad,
              gc,
              dc,
          )
  
file_path: pytorch/caffe2/python/operator_test/adagrad_test.py
imports: import functools
  import caffe2.python.hypothesis_test_util
  import caffe2.python.serialized_test.serialized_test_util
  import hypothesis.strategies
  import numpy
  from caffe2.python import core
  from caffe2.python.operator_test.adagrad_test_helper import adagrad_sparse_test_helper, ref_adagrad
  from hypothesis import HealthCheck, given, settings
label_desc: Use image node_id 5 for calling the TestAdagrad obj's underlying member method code with example usage: obj.test_sparse_adagrad_empty(inputs, lr, epsilon, gc, dc) without return types