normalizer_context.py 1007 B

12345678910111213141516171819202122232425262728293031323334353637
  1. # @package regularizer_context
  2. # Module caffe2.python.normalizer_context
  3. from caffe2.python import context
  4. from caffe2.python.modifier_context import (
  5. ModifierContext, UseModifierBase)
  6. class NormalizerContext(ModifierContext, context.DefaultManaged):
  7. """
  8. provide context to allow param_info to have different normalizers
  9. """
  10. def has_normalizer(self, name):
  11. return self._has_modifier(name)
  12. def get_normalizer(self, name):
  13. assert self.has_normalizer(name), (
  14. "{} normalizer is not provided!".format(name))
  15. return self._get_modifier(name)
  16. class UseNormalizer(UseModifierBase):
  17. '''
  18. context class to allow setting the current context.
  19. Example usage with layer:
  20. normalizers = {'norm1': norm1, 'norm2': norm2}
  21. with UseNormalizer(normalizers):
  22. norm = NormalizerContext.current().get_normalizer('norm1')
  23. layer(norm=norm)
  24. '''
  25. def _context_class(self):
  26. return NormalizerContext