code: def _custom_dtype_getter(self, getter, name, shape=None, dtype=DEFAULT_DTYPE,
                             *args, **kwargs):
      
  
      if dtype in CASTABLE_TYPES:
        var = getter(name, shape, tf.float32, *args, **kwargs)
        return tf.cast(var, dtype=dtype, name=name + '_cast')
      else:
        return getter(name, shape, dtype, *args, **kwargs)
docs: Creates variables in fp32, then casts to fp16 if necessary.
  
      This function is a custom getter. A custom getter is a function with the
      same signature as tf.get_variable, except it has an additional getter
      parameter. Custom getters can be passed as the `custom_getter` parameter of
      tf.variable_scope. Then, tf.get_variable will call the custom getter,
      instead of directly getting a variable itself. This can be used to change
      the types of variables that are retrieved with tf.get_variable.
      The `getter` parameter is the underlying variable getter, that would have
      been called if no custom getter was used. Custom getters typically get a
      variable with `getter`, then modify it in some way.
  
      This custom getter will create an fp32 variable. If a low precision
      (e.g. float16) variable was requested it will then cast the variable to the
      requested dtype. The reason we do not directly create variables in low
      precision dtypes is that applying small gradients to such variables may
      cause the variable not to change.
  
      Args:
        getter: The underlying variable getter, that has the same signature as
          tf.get_variable and returns a variable.
        name: The name of the variable to get.
        shape: The shape of the variable to get.
        dtype: The dtype of the variable to get. Note that if this is a low
          precision dtype, the variable will be created as a tf.float32 variable,
          then cast to the appropriate dtype
        *args: Additional arguments to pass unmodified to getter.
        **kwargs: Additional keyword arguments to pass unmodified to getter.
  
      Returns:
        A variable which is cast to fp16 if necessary.