code: def _gather_wrapper(self, net, version, in_indices, out):
      # Gather can work on all kinds of input data types, and output
      # data with the same type. Convert the output of Gather to float,
      # because the follow-up Ops expect fp32.
      if version == "fp32":
          return net.Gather([self.w, in_indices], out)
      elif version == "fp16":
          gathered_w = net.Gather([self.w, in_indices], "gathered_w")
          return net.HalfToFloat(gathered_w, out)
      elif version == "uint8rowwise":
          gathered_w = net.Gather([self.w, in_indices], "gathered_w")
          gathered_scale_bias = net.Gather(
              [self.scale_bias, in_indices], "gathered_scale_bias"
          )
  
          return net.Rowwise8BitQuantizedToFloat(
              [gathered_w, gathered_scale_bias], out
          )
      elif version == "fused_uint8rowwise":
          gathered_w = net.Gather([self.w, in_indices], "gathered_w")
          return net.Fused8BitRowwiseQuantizedToFloat(gathered_w, out)
      elif version == "fused_uint4rowwise":
          gathered_w = net.Gather([self.w, in_indices], "gathered_w")
          return net.Fused4BitRowwiseQuantizedToFloat(gathered_w, out)
  
      else:
          raise "Unsupported version of operators in SparseLookup " + "layer: {0} for sparse feature {1}".format(
              version, self.sparse_key
          )
  
imports: from caffe2.python.optimizer import FP16_ENGINES, Optimizer
  from caffe2.python.helpers.arg_scope import get_current_scope
  from caffe2.python import schema
  from caffe2.python.layers.layers import get_categorical_limit, get_key, IdList, IdScoreList, IdListWithEvicted, IdScoreListWithEvicted, LayerPsParam, ModelLayer, almost_equal_schemas
  import collections
  import functools
  import logging
  import math
  import numpy
  import operator
label_desc: Use image node_id 7 for calling the SparseLookup obj's underlying member method code with example usage: obj._gather_wrapper(net, version, in_indices, out) and returns: net, net, net, net, net