Ejemplo n.º 1
0
 def Setup(self, bottom):
     super(NormalizeLayer, self).Setup(bottom)
     norm_out = [ops.L2Norm(bottom[0], **self._l2norm_param)]
     scale_out = ops.Scale(
         norm_out + [blob['data'] for blob in self.scale_blobs],
         **self._scale_param)
     return scale_out
Ejemplo n.º 2
0
def batch_normalization(x, mean, variance,
                        offset, scale,
                        decay=0.9,
                        variance_epsilon=1e-3,
                        use_global_stats=-1,
                        name=None):
    norm_x = ops.BatchNorm([x, mean, variance], decay, variance_epsilon, use_global_stats, name=name)
    return ops.Scale([norm_x, scale, offset], name=name + '_scale' if name is not None else name)
Ejemplo n.º 3
0
def batch_norm_with_global_normalization(t, m, v,
                                         beta, gamma,
                                         decay=0.9,
                                         variance_epsilon=1e-3,
                                         scale_after_normalization=True,
                                         use_global_stats=-1,
                                         name=None):
    norm_x = ops.BatchNorm([t, m, v], decay, variance_epsilon, use_global_stats, name=name)
    if scale_after_normalization:
        return ops.Scale([norm_x, gamma, beta], name=name + '_scale' if name is not None else name)
    else: return norm_x
Ejemplo n.º 4
0
    def call(self, inputs, training=False):
        use_stats = 0 if training else 1
        if self.fused:
            return ops.FusedBatchNorm([
                inputs, self.moving_mean, self.moving_variance, self.gamma,
                self.beta
            ],
                                      axis=self.axis,
                                      momentum=self.momentum,
                                      eps=self.epsilon,
                                      use_stats=use_stats,
                                      mode='DEFAULT')

        x_norm = ops.BatchNorm(
            [inputs, self.moving_mean, self.moving_variance],
            axis=self.axis,
            momentum=self.momentum,
            eps=self.epsilon,
            use_stats=use_stats,
            mode='DEFAULT')
        if self.gamma is not None:
            # use scale
            if self.beta is not None:
                return ops.Scale([x_norm, self.gamma, self.beta],
                                 axis=self.axis,
                                 num_axes=1)
            else:
                return ops.Scale([x_norm, self.gamma],
                                 axis=self.axis,
                                 num_axes=1)
        else:
            # do not use scale
            if self.beta is not None:
                return ops.BiasAdd([x_norm, self.beta],
                                   data_format=self._data_format)
            else:
                return x_norm
Ejemplo n.º 5
0
 def Setup(self, bottom):
     super(ScaleLayer, self).Setup(bottom)
     return ops.Scale(bottom + [blob['data'] for blob in self._blobs],
                      **self._param)