regularizer_context.py 1013 B

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