| # @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 |