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