MCPcopy Create free account
hub / github.com/pytorch/pytorch / spatial_gn

Function spatial_gn

caffe2/python/helpers/normalization.py:156–208  ·  view source on GitHub ↗

Group normalizes the input, cf. https://arxiv.org/abs/1803.08494.

(model, blob_in, blob_out, dim_in,
               init_scale=1., init_bias=0.,
               ScaleInitializer=None, BiasInitializer=None,
               RunningMeanInitializer=None, RunningVarianceInitializer=None,
               order="NCHW", **kwargs)

Source from the content-addressed store, hash-verified

154
155
156def spatial_gn(model, blob_in, blob_out, dim_in,
157 init_scale=1., init_bias=0.,
158 ScaleInitializer=None, BiasInitializer=None,
159 RunningMeanInitializer=None, RunningVarianceInitializer=None,
160 order="NCHW", **kwargs):
161 '''
162 Group normalizes the input, cf. https://arxiv.org/abs/1803.08494.
163 '''
164
165 blob_out = blob_out or model.net.NextName()
166 # Input: input, scale, bias
167 # Output: output, group_mean, group_inv_std
168 # scale: initialize with init_scale (default 1.)
169 # [recommendation: set init_scale = 0. in the last layer for each res block]
170 # bias: initialize with init_bias (default 0.)
171
172 if model.init_params:
173 scale_init = ("ConstantFill", {'value': init_scale})
174 bias_init = ("ConstantFill", {'value': init_bias})
175
176 ScaleInitializer = initializers.update_initializer(
177 ScaleInitializer, scale_init, ("ConstantFill", {})
178 )
179 BiasInitializer = initializers.update_initializer(
180 BiasInitializer, bias_init, ("ConstantFill", {})
181 )
182 else:
183 ScaleInitializer = initializers.ExternalInitializer()
184 BiasInitializer = initializers.ExternalInitializer()
185
186 scale = model.create_param(
187 param_name=blob_out + '_s',
188 shape=[dim_in],
189 initializer=ScaleInitializer,
190 tags=ParameterTags.WEIGHT
191 )
192
193 bias = model.create_param(
194 param_name=blob_out + '_b',
195 shape=[dim_in],
196 initializer=BiasInitializer,
197 tags=ParameterTags.BIAS
198 )
199
200 blob_outs = [blob_out,
201 blob_out + "_mean", blob_out + "_std"]
202
203 blob_outputs = model.net.GroupNorm(
204 [blob_in, scale, bias],
205 blob_outs,
206 **kwargs)
207 # Return the output
208 return blob_outputs[0]
209
210
211def layer_norm(

Callers

nothing calls this directly

Calls 2

NextNameMethod · 0.80
create_paramMethod · 0.45

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…