Revert D4854240: [EAZY][C2 OSS] Add normalization helpers and proxy to CNNModelHelper
Summary: This reverts commit 3fa594d79960742b34e20d843e8b6ef8aeb601d3
Differential Revision: D4854240
fbshipit-source-id: d08cb30f188f876e1962f53a44f4e6d4ea68297f
diff --git a/caffe2/python/cnn.py b/caffe2/python/cnn.py
index 11bc5d9..c666635 100644
--- a/caffe2/python/cnn.py
+++ b/caffe2/python/cnn.py
@@ -359,19 +359,14 @@
def Dropout(self, *args, **kwargs):
return model_helpers.Dropout(self, *args, **kwargs)
- def LRN(self, *args, **kwargs):
- return model_helpers.LRN(self, *args, **kwargs)
-
- def Softmax(self, *args, **kwargs):
- return model_helpers.Softmax(self, *args, use_cudnn=self.use_cudnn,
- **kwargs)
-
- def SpatialBN(self, *args, **kwargs):
- return model_helpers.SpatialBN(self, *args, **kwargs)
-
- def InstanceNorm(self, *args, **kwargs):
- return model_helpers.InstanceNorm(self, *args,
- use_cudnn=self.use_cudnn, **kwargs)
+ def LRN(self, blob_in, blob_out, **kwargs):
+ """LRN"""
+ return self.net.LRN(
+ blob_in,
+ [blob_out, "_" + blob_out + "_scale"],
+ order=self.order,
+ **kwargs
+ )[0]
def MaxPool(self, *args, **kwargs):
return model_helpers.MaxPool(self, *args, use_cudnn=self.use_cudnn,
@@ -427,10 +422,93 @@
kwargs['engine'] = 'CUDNN'
return self.net.Transpose(blob_in, blob_out, **kwargs)
+ def Softmax(self, blob_in, blob_out=None, **kwargs):
+ """Softmax."""
+ if self.use_cudnn:
+ kwargs['engine'] = 'CUDNN'
+ if blob_out is not None:
+ return self.net.Softmax(blob_in, blob_out, **kwargs)
+ else:
+ return self.net.Softmax(blob_in, **kwargs)
+
def Sum(self, blob_in, blob_out, **kwargs):
"""Sum"""
return self.net.Sum(blob_in, blob_out, **kwargs)
+ def InstanceNorm(self, blob_in, blob_out, dim_in, **kwargs):
+ blob_out = blob_out or self.net.NextName()
+ # Input: input, scale, bias
+ # Output: output, saved_mean, saved_inv_std
+ # scale: initialize with ones
+ # bias: initialize with zeros
+
+ def init_blob(value, suffix):
+ return self.param_init_net.ConstantFill(
+ [], blob_out + "_" + suffix, shape=[dim_in], value=value)
+ scale, bias = init_blob(1.0, "s"), init_blob(0.0, "b")
+
+ self.params.extend([scale, bias])
+ self.weights.append(scale)
+ self.biases.append(bias)
+ blob_outs = [blob_out, blob_out + "_sm", blob_out + "_siv"]
+ if 'is_test' in kwargs and kwargs['is_test']:
+ blob_outputs = self.net.InstanceNorm(
+ [blob_in, scale, bias], [blob_out],
+ order=self.order, **kwargs)
+ return blob_outputs
+ else:
+ blob_outputs = self.net.InstanceNorm(
+ [blob_in, scale, bias], blob_outs,
+ order=self.order, **kwargs)
+ # Return the output
+ return blob_outputs[0]
+
+ def SpatialBN(self, blob_in, blob_out, dim_in, **kwargs):
+ blob_out = blob_out or self.net.NextName()
+ # Input: input, scale, bias, est_mean, est_inv_var
+ # Output: output, running_mean, running_inv_var, saved_mean,
+ # saved_inv_var
+ # scale: initialize with ones
+ # bias: initialize with zeros
+ # est mean: zero
+ # est var: ones
+
+ def init_blob(value, suffix):
+ return self.param_init_net.ConstantFill(
+ [], blob_out + "_" + suffix, shape=[dim_in], value=value)
+
+ if self.init_params:
+ scale, bias = init_blob(1.0, "s"), init_blob(0.0, "b")
+ running_mean = init_blob(0.0, "rm")
+ running_inv_var = init_blob(1.0, "riv")
+ else:
+ scale = core.ScopedBlobReference(
+ blob_out + '_s', self.param_init_net)
+ bias = core.ScopedBlobReference(
+ blob_out + '_b', self.param_init_net)
+ running_mean = core.ScopedBlobReference(
+ blob_out + '_rm', self.param_init_net)
+ running_inv_var = core.ScopedBlobReference(
+ blob_out + '_riv', self.param_init_net)
+
+ self.params.extend([scale, bias])
+ self.computed_params.extend([running_mean, running_inv_var])
+ self.weights.append(scale)
+ self.biases.append(bias)
+ blob_outs = [blob_out, running_mean, running_inv_var,
+ blob_out + "_sm", blob_out + "_siv"]
+ if 'is_test' in kwargs and kwargs['is_test']:
+ blob_outputs = self.net.SpatialBN(
+ [blob_in, scale, bias, blob_outs[1], blob_outs[2]], [blob_out],
+ order=self.order, **kwargs)
+ return blob_outputs
+ else:
+ blob_outputs = self.net.SpatialBN(
+ [blob_in, scale, bias, blob_outs[1], blob_outs[2]], blob_outs,
+ order=self.order, **kwargs)
+ # Return the output
+ return blob_outputs[0]
+
def Iter(self, blob_out, **kwargs):
if 'device_option' in kwargs:
del kwargs['device_option']
diff --git a/caffe2/python/helpers/normalization.py b/caffe2/python/helpers/normalization.py
deleted file mode 100644
index 6b3bea3..0000000
--- a/caffe2/python/helpers/normalization.py
+++ /dev/null
@@ -1,111 +0,0 @@
-## @package normalization
-# Module caffe2.python.helpers.normalization
-from __future__ import absolute_import
-from __future__ import division
-from __future__ import print_function
-from __future__ import unicode_literals
-
-from caffe2.python import core
-
-__all__ = [
- 'LRN',
- 'Softmax',
- 'InstanceNorm',
- 'SpatialBN',
-]
-
-
-def LRN(model, blob_in, blob_out, **kwargs):
- """LRN"""
- return model.net.LRN(
- blob_in,
- [blob_out, "_" + blob_out + "_scale"],
- order=model.order,
- **kwargs
- )[0]
-
-
-def Softmax(model, blob_in, blob_out=None, use_cudnn=False, **kwargs):
- """Softmax."""
- if use_cudnn:
- kwargs['engine'] = 'CUDNN'
- if blob_out is not None:
- return model.net.Softmax(blob_in, blob_out, **kwargs)
- else:
- return model.net.Softmax(blob_in, **kwargs)
-
-
-def InstanceNorm(model, blob_in, blob_out, dim_in, **kwargs):
- blob_out = blob_out or model.net.NextName()
- # Input: input, scale, bias
- # Output: output, saved_mean, saved_inv_std
- # scale: initialize with ones
- # bias: initialize with zeros
-
- def init_blob(value, suffix):
- return model.param_init_net.ConstantFill(
- [], blob_out + "_" + suffix, shape=[dim_in], value=value)
- scale, bias = init_blob(1.0, "s"), init_blob(0.0, "b")
-
- model.params.extend([scale, bias])
- model.weights.append(scale)
- model.biases.append(bias)
- blob_outs = [blob_out, blob_out + "_sm", blob_out + "_siv"]
- if 'is_test' in kwargs and kwargs['is_test']:
- blob_outputs = model.net.InstanceNorm(
- [blob_in, scale, bias], [blob_out],
- order=model.order, **kwargs)
- return blob_outputs
- else:
- blob_outputs = model.net.InstanceNorm(
- [blob_in, scale, bias], blob_outs,
- order=model.order, **kwargs)
- # Return the output
- return blob_outputs[0]
-
-
-def SpatialBN(model, blob_in, blob_out, dim_in, **kwargs):
- blob_out = blob_out or model.net.NextName()
- # Input: input, scale, bias, est_mean, est_inv_var
- # Output: output, running_mean, running_inv_var, saved_mean,
- # saved_inv_var
- # scale: initialize with ones
- # bias: initialize with zeros
- # est mean: zero
- # est var: ones
-
- def init_blob(value, suffix):
- return model.param_init_net.ConstantFill(
- [], blob_out + "_" + suffix, shape=[dim_in], value=value)
-
- if model.init_params:
- scale, bias = init_blob(1.0, "s"), init_blob(0.0, "b")
- running_mean = init_blob(0.0, "rm")
- running_inv_var = init_blob(1.0, "riv")
- else:
- scale = core.ScopedBlobReference(
- blob_out + '_s', model.param_init_net)
- bias = core.ScopedBlobReference(
- blob_out + '_b', model.param_init_net)
- running_mean = core.ScopedBlobReference(
- blob_out + '_rm', model.param_init_net)
- running_inv_var = core.ScopedBlobReference(
- blob_out + '_riv', model.param_init_net)
-
- model.params.extend([scale, bias])
- model.computed_params.extend([running_mean, running_inv_var])
- model.weights.append(scale)
- model.biases.append(bias)
- blob_outs = [blob_out, running_mean, running_inv_var,
- blob_out + "_sm", blob_out + "_siv"]
- if 'is_test' in kwargs and kwargs['is_test']:
- blob_outputs = model.net.SpatialBN(
- [blob_in, scale, bias, blob_outs[1], blob_outs[2]], [blob_out],
- order=model.order, **kwargs)
- return blob_outputs
- else:
- blob_outputs = model.net.SpatialBN(
- [blob_in, scale, bias, blob_outs[1], blob_outs[2]], blob_outs,
- order=model.order, **kwargs)
- # Return the output
- return blob_outputs[0]
diff --git a/caffe2/python/model_helpers.py b/caffe2/python/model_helpers.py
index e0f14d3..ab77d6c 100644
--- a/caffe2/python/model_helpers.py
+++ b/caffe2/python/model_helpers.py
@@ -10,4 +10,3 @@
from caffe2.python.helpers.dropout import *
from caffe2.python.helpers.fc import *
from caffe2.python.helpers.pooling import *
-from caffe2.python.helpers.normalization import *