code: def get_custom_getter(self):
          
  
          def inner_custom_getter(getter, *args, **kwargs):
              if not self.use_tf_layers:
                  return getter(*args, **kwargs)
              requested_dtype = kwargs["dtype"]
              if not (requested_dtype == tf.float32
                      and self.variable_dtype == tf.float16):
                  kwargs["dtype"] = self.variable_dtype
              var = getter(*args, **kwargs)
              if var.dtype.base_dtype != requested_dtype:
                  var = tf.cast(var, requested_dtype)
              return var
  
          return inner_custom_getter
docs: Returns a custom getter that this class's methods must be called
  
      All methods of this class must be called under a variable scope that was
      passed this custom getter. Example:
  
      ```python
      network = ConvNetBuilder(...)
      with tf.variable_scope("cg", custom_getter=network.get_custom_getter()):
        network.conv(...)
        # Call more methods of network here
      ```
  
      Currently, this custom getter only does anything if self.use_tf_layers is
      True. In that case, it causes variables to be stored as dtype
      self.variable_type, then casted to the requested dtype, instead of directly
      storing the variable as the requested dtype.