| # @package regularizer_context | |
| # Module caffe2.python.normalizer_context | |
| from caffe2.python import context | |
| from caffe2.python.modifier_context import ( | |
| ModifierContext, UseModifierBase) | |
| class NormalizerContext(ModifierContext, context.DefaultManaged): | |
| """ | |
| provide context to allow param_info to have different normalizers | |
| """ | |
| def has_normalizer(self, name): | |
| return self._has_modifier(name) | |
| def get_normalizer(self, name): | |
| assert self.has_normalizer(name), ( | |
| "{} normalizer is not provided!".format(name)) | |
| return self._get_modifier(name) | |
| class UseNormalizer(UseModifierBase): | |
| ''' | |
| context class to allow setting the current context. | |
| Example usage with layer: | |
| normalizers = {'norm1': norm1, 'norm2': norm2} | |
| with UseNormalizer(normalizers): | |
| norm = NormalizerContext.current().get_normalizer('norm1') | |
| layer(norm=norm) | |
| ''' | |
| def _context_class(self): | |
| return NormalizerContext |