@@ -72,17 +72,22 @@ Ptr<Layer> createLayerFromCaffe<PoolingLayer>(LayerParams ¶ms)
72
72
pad.height , pad.width , stride.height , stride.width , padMode);
73
73
// getCaffeConvParams(params, kernel, pad, stride);
74
74
75
+ Ptr<Layer> l;
75
76
if (!globalPooling)
76
- return Ptr<Layer>( PoolingLayer::create (type, kernel, stride, pad, padMode) );
77
+ l = PoolingLayer::create (type, kernel, stride, pad, padMode);
77
78
else
78
- return Ptr<Layer>(PoolingLayer::createGlobal (type));
79
+ l = PoolingLayer::createGlobal (type);
80
+ l->setParamsFrom (params);
81
+ return l;
79
82
}
80
83
81
84
template <>
82
85
Ptr<Layer> createLayerFromCaffe<SoftmaxLayer>(LayerParams ¶ms)
83
86
{
84
87
int axis = params.get <int >(" axis" , 1 );
85
- return Ptr<Layer>(SoftmaxLayer::create (axis));
88
+ Ptr<Layer> l (SoftmaxLayer::create (axis));
89
+ l->setParamsFrom (params);
90
+ return l;
86
91
}
87
92
88
93
template <> // InnerProduct specialization
@@ -129,17 +134,21 @@ Ptr<Layer> createLayerFromCaffe<LRNLayer>(LayerParams& params)
129
134
double bias = params.get <double >(" bias" , 1 );
130
135
bool normBySize = params.get <bool >(" norm_by_size" , true );
131
136
132
- return Ptr<Layer>(LRNLayer::create (type, size, alpha, beta, bias, normBySize));
137
+ Ptr<Layer> l (LRNLayer::create (type, size, alpha, beta, bias, normBySize));
138
+ l->setParamsFrom (params);
139
+ return l;
133
140
}
134
141
135
142
template <>
136
143
Ptr<Layer> createLayerFromCaffe<MVNLayer>(LayerParams ¶ms)
137
144
{
138
- return Ptr<Layer>(MVNLayer::create (
145
+ Ptr<Layer> l (MVNLayer::create (
139
146
params.get <bool >(" normalize_variance" , true ),
140
147
params.get <bool >(" across_channels" , false ),
141
148
params.get <double >(" eps" , 1e-9 )
142
149
));
150
+ l->setParamsFrom (params);
151
+ return l;
143
152
}
144
153
145
154
/* Reshape layers */
@@ -164,13 +173,17 @@ Ptr<Layer> createLayerFromCaffe<ReshapeLayer>(LayerParams ¶ms)
164
173
else
165
174
newShape = Shape::all (0 );
166
175
167
- return Ptr<Layer>(ReshapeLayer::create (newShape, applyingRange, enableReordering));
176
+ Ptr<Layer> l (ReshapeLayer::create (newShape, applyingRange, enableReordering));
177
+ l->setParamsFrom (params);
178
+ return l;
168
179
}
169
180
170
181
template <>
171
182
Ptr<Layer> createLayerFromCaffe<ConcatLayer>(LayerParams& params)
172
183
{
173
- return Ptr<Layer>(ConcatLayer::create (params.get <int >(" axis" , 1 )));
184
+ Ptr<Layer> l (ConcatLayer::create (params.get <int >(" axis" , 1 )));
185
+ l->setParamsFrom (params);
186
+ return l;
174
187
}
175
188
176
189
template <>
@@ -189,17 +202,20 @@ Ptr<Layer> createLayerFromCaffe<SplitLayer>(LayerParams ¶ms)
189
202
outputsCount = -1 ;
190
203
}
191
204
192
- return Ptr<Layer>(SplitLayer::create (outputsCount));
205
+ Ptr<Layer> l (SplitLayer::create (outputsCount));
206
+ l->setParamsFrom (params);
207
+ return l;
193
208
}
194
209
195
210
template <>
196
211
Ptr<Layer> createLayerFromCaffe<SliceLayer>(LayerParams& params)
197
212
{
198
213
int axis = params.get <int >(" axis" , 1 );
199
214
215
+ Ptr<Layer> l;
200
216
if (!params.has (" slice_point" ))
201
217
{
202
- return Ptr<Layer>( SliceLayer::create (axis) );
218
+ l = SliceLayer::create (axis);
203
219
}
204
220
else
205
221
{
@@ -208,8 +224,10 @@ Ptr<Layer> createLayerFromCaffe<SliceLayer>(LayerParams& params)
208
224
for (int i = 0 ; i < indicesValue.size (); i++)
209
225
sliceIndices[i] = indicesValue.get <int >(i);
210
226
211
- return Ptr<Layer>( SliceLayer::create (axis, sliceIndices) );
227
+ l = SliceLayer::create (axis, sliceIndices);
212
228
}
229
+ l->setParamsFrom (params);
230
+ return l;
213
231
}
214
232
215
233
/* Activation layers */
@@ -224,7 +242,9 @@ template<> //ReLU specialization
224
242
Ptr<Layer> createLayerFromCaffe<ReLULayer>(LayerParams& params)
225
243
{
226
244
float negative_slope = params.get <float >(" negative_slope" , 0 .f );
227
- return Ptr<Layer>(ReLULayer::create (negative_slope));
245
+ Ptr<Layer> l (ReLULayer::create (negative_slope));
246
+ l->setParamsFrom (params);
247
+ return l;
228
248
}
229
249
230
250
template <> // Power specialization
@@ -233,7 +253,9 @@ Ptr<Layer> createLayerFromCaffe<PowerLayer>(LayerParams& params)
233
253
float power = params.get <float >(" power" , 1 .0f );
234
254
float scale = params.get <float >(" scale" , 1 .0f );
235
255
float shift = params.get <float >(" shift" , 0 .0f );
236
- return Ptr<Layer>(PowerLayer::create (power, scale, shift));
256
+ Ptr<Layer> l (PowerLayer::create (power, scale, shift));
257
+ l->setParamsFrom (params);
258
+ return l;
237
259
}
238
260
239
261
template <> // CropLayer specialization
@@ -249,7 +271,9 @@ Ptr<Layer> createLayerFromCaffe<CropLayer>(LayerParams& params)
249
271
offset.push_back (paramOffset->get <int >(i));
250
272
}
251
273
252
- return Ptr<Layer>(CropLayer::create (start_axis, offset));
274
+ Ptr<Layer> l (CropLayer::create (start_axis, offset));
275
+ l->setParamsFrom (params);
276
+ return l;
253
277
}
254
278
255
279
template <> // Eltwise specialization
@@ -279,7 +303,9 @@ Ptr<Layer> createLayerFromCaffe<EltwiseLayer>(LayerParams& params)
279
303
coeffs[i] = paramCoeff.get <int >(i);
280
304
}
281
305
}
282
- return Ptr<Layer>(EltwiseLayer::create (op, coeffs));
306
+ Ptr<Layer> l (EltwiseLayer::create (op, coeffs));
307
+ l->setParamsFrom (params);
308
+ return l;
283
309
}
284
310
285
311
template <> // BatchNormLayer specialization
@@ -313,6 +339,7 @@ Ptr<Layer> createLayerFromCaffe<MaxUnpoolLayer>(LayerParams& params)
313
339
Size outSize (params.get <int >(" out_w" ),
314
340
params.get <int >(" out_h" ));
315
341
Ptr<MaxUnpoolLayer> l = MaxUnpoolLayer::create (outSize);
342
+ l->setParamsFrom (params);
316
343
317
344
return Ptr<Layer>(l);
318
345
}
0 commit comments