3 from __future__
import absolute_import
4 from __future__
import division
5 from __future__
import print_function
6 from __future__
import unicode_literals
8 from caffe2.python
import core
11 def LRN(model, blob_in, blob_out, **kwargs):
15 [blob_out,
"_" + blob_out +
"_scale"],
21 def Softmax(model, blob_in, blob_out=None, use_cudnn=False, **kwargs):
24 kwargs[
'engine'] =
'CUDNN' 25 if blob_out
is not None:
26 return model.net.Softmax(blob_in, blob_out, **kwargs)
28 return model.net.Softmax(blob_in, **kwargs)
31 def InstanceNorm(model, blob_in, blob_out, dim_in, order="NCHW", **kwargs):
32 blob_out = blob_out
or model.net.NextName()
38 def init_blob(value, suffix):
39 return model.param_init_net.ConstantFill(
40 [], blob_out +
"_" + suffix, shape=[dim_in], value=value)
41 scale, bias = init_blob(1.0,
"s"), init_blob(0.0,
"b")
43 model.params.extend([scale, bias])
44 model.weights.append(scale)
45 model.biases.append(bias)
46 blob_outs = [blob_out, blob_out +
"_sm", blob_out +
"_siv"]
47 if 'is_test' in kwargs
and kwargs[
'is_test']:
48 blob_outputs = model.net.InstanceNorm(
49 [blob_in, scale, bias], [blob_out],
50 order=order, **kwargs)
53 blob_outputs = model.net.InstanceNorm(
54 [blob_in, scale, bias], blob_outs,
55 order=order, **kwargs)
57 return blob_outputs[0]
60 def SpatialBN(model, blob_in, blob_out, dim_in, order="NCHW", **kwargs):
61 blob_out = blob_out
or model.net.NextName()
70 def init_blob(value, suffix):
71 return model.param_init_net.ConstantFill(
72 [], blob_out +
"_" + suffix, shape=[dim_in], value=value)
75 scale, bias = init_blob(1.0,
"s"), init_blob(0.0,
"b")
76 running_mean = init_blob(0.0,
"rm")
77 running_inv_var = init_blob(1.0,
"riv")
80 blob_out +
'_s', model.param_init_net)
82 blob_out +
'_b', model.param_init_net)
84 blob_out +
'_rm', model.param_init_net)
86 blob_out +
'_riv', model.param_init_net)
88 model.params.extend([scale, bias])
89 model.computed_params.extend([running_mean, running_inv_var])
90 model.weights.append(scale)
91 model.biases.append(bias)
92 blob_outs = [blob_out, running_mean, running_inv_var,
93 blob_out +
"_sm", blob_out +
"_siv"]
94 if 'is_test' in kwargs
and kwargs[
'is_test']:
95 blob_outputs = model.net.SpatialBN(
96 [blob_in, scale, bias, blob_outs[1], blob_outs[2]], [blob_out],
97 order=order, **kwargs)
100 blob_outputs = model.net.SpatialBN(
101 [blob_in, scale, bias, blob_outs[1], blob_outs[2]], blob_outs,
102 order=order, **kwargs)
104 return blob_outputs[0]
def LRN(model, blob_in, blob_out, kwargs)
def ScopedBlobReference(name, args, kwargs)
def Softmax(model, blob_in, blob_out=None, use_cudnn=False, kwargs)