@@ -90,12 +90,12 @@ class PoolingOp : public Operator {
90
90
param_.global_pool ? 1 : param_.stride [0 ],
91
91
param_.global_pool ? 1 : param_.stride [1 ]));
92
92
} else if (param_.pool_type == pool_enum::kAvgPooling ) {
93
+ ScalarExp<DType> x = ScalarExp<DType>(1 .0f / (param_.global_pool ?
94
+ data.shape_ [2 ] * data.shape_ [3 ] :
95
+ param_.kernel [0 ] * param_.kernel [1 ]));
93
96
Assign (out,
94
97
req[pool_enum::kOut ],
95
- (1 .0f / (param_.global_pool ?
96
- data.shape_ [2 ] * data.shape_ [3 ] :
97
- param_.kernel [0 ] * param_.kernel [1 ])) * \
98
- pool<Reducer>(pad (data, param_.pad [0 ], param_.pad [1 ]),
98
+ x * pool<Reducer>(pad (data, param_.pad [0 ], param_.pad [1 ]),
99
99
out_shape,
100
100
param_.global_pool ? data.shape_ [2 ] : param_.kernel [0 ],
101
101
param_.global_pool ? data.shape_ [3 ] : param_.kernel [1 ],
@@ -140,9 +140,9 @@ class PoolingOp : public Operator {
140
140
param_.pad [0 ],
141
141
param_.pad [1 ]));
142
142
} else if (param_.pool_type == pool_enum::kAvgPooling ) {
143
+ ScalarExp<DType> x = ScalarExp<DType>(1 .0f / param_.kernel [0 ] / param_.kernel [1 ]);
143
144
Assign (input_grad, req[pool_enum::kData ],
144
- (1 .0f / param_.kernel [0 ] / param_.kernel [1 ]) *\
145
- crop (unpool<Reducer>(pad (data, param_.pad [0 ], param_.pad [1 ]),
145
+ x * crop (unpool<Reducer>(pad (data, param_.pad [0 ], param_.pad [1 ]),
146
146
pad (output_data, 0 , 0 ),
147
147
pad (grad, 0 , 0 ),
148
148
param_.global_pool ? in_shape[0 ] : param_.kernel [0 ],
0 commit comments