MCPcopy Create free account
hub / github.com/apache/singa / Setup

Method Setup

src/model/layer/convolution.cc:27–104  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

25
26RegisterLayerClass(singacpp_convolution, Convolution);
27void Convolution::Setup(const Shape &in_sample, const LayerConf &conf) {
28 Layer::Setup(in_sample, conf);
29 ConvolutionConf conv_conf = conf.convolution_conf();
30 // kernel_size, pad, and stride are repeated fields.
31 if (conv_conf.kernel_size_size() > 0) {
32 if (conv_conf.kernel_size_size() == 1) {
33 kernel_w_ = kernel_h_ = conv_conf.kernel_size(0);
34 } else {
35 kernel_w_ = conv_conf.kernel_size(0);
36 kernel_h_ = conv_conf.kernel_size(1);
37 }
38 } else {
39 kernel_w_ = conv_conf.kernel_w();
40 kernel_h_ = conv_conf.kernel_h();
41 }
42 CHECK_GT(kernel_w_, 0u);
43 CHECK_GT(kernel_h_, 0u);
44
45 if (conv_conf.pad_size() > 0) {
46 if (conv_conf.pad_size() == 1) {
47 pad_w_ = pad_h_ = conv_conf.pad(0);
48 } else {
49 pad_w_ = conv_conf.pad(0);
50 pad_h_ = conv_conf.pad(1);
51 }
52 } else {
53 pad_w_ = conv_conf.pad_w();
54 pad_h_ = conv_conf.pad_h();
55 }
56 CHECK_GE(pad_w_, 0u);
57 CHECK_GE(pad_h_, 0u);
58
59 const int kStrideDefault = 1;
60 if (conv_conf.stride_size() > 0) {
61 if (conv_conf.stride_size() == 1) {
62 stride_w_ = stride_h_ = conv_conf.stride(0);
63 } else {
64 stride_w_ = conv_conf.stride(0);
65 stride_h_ = conv_conf.stride(1);
66 }
67 } else {
68 stride_w_ = kStrideDefault;
69 stride_h_ = kStrideDefault;
70 if (conv_conf.has_stride_w()) {
71 stride_w_ = conv_conf.stride_w();
72 }
73 if (conv_conf.has_stride_h()) {
74 stride_h_ = conv_conf.stride_h();
75 }
76 }
77 CHECK_GT(stride_w_, 0u);
78 CHECK_GE(stride_h_, 0u); // 0 for 1D conv
79
80 num_filters_ = conv_conf.num_output();
81 bias_term_ = conv_conf.bias_term();
82
83 // Shape of input image
84 CHECK_EQ(in_sample.size(), 3u);

Callers

nothing calls this directly

Calls 10

SetupFunction · 0.85
num_outputMethod · 0.80
bias_termMethod · 0.80
kernel_wMethod · 0.45
kernel_hMethod · 0.45
pad_wMethod · 0.45
pad_hMethod · 0.45
stride_wMethod · 0.45
stride_hMethod · 0.45
sizeMethod · 0.45

Tested by

no test coverage detected