@@ -211,18 +211,36 @@ int AvgPool1D(float *output_signal, unsigned out_T, const float *input_signal, u
211
211
}
212
212
213
213
int BatchNorm1d (float * output_signal , float * input_signal , unsigned in_T , unsigned in_channels ,
214
- float * mean , float * stddev , unsigned in_place ){
215
- if (in_place ){
216
- for (int t = 0 ; t < in_T ; t ++ ){
217
- for (int d = 0 ; d < in_channels ; d ++ ){
218
- input_signal [t * in_channels + d ] = (input_signal [t * in_channels + d ] - mean [d ])/stddev [d ];
214
+ float * mean , float * var , unsigned affine , float * gamma , float * beta , unsigned in_place ){
215
+ if (affine ){
216
+ if (in_place ){
217
+ for (int t = 0 ; t < in_T ; t ++ ){
218
+ for (int d = 0 ; d < in_channels ; d ++ ){
219
+ input_signal [t * in_channels + d ] = gamma [d ]* ((input_signal [t * in_channels + d ] - mean [d ])/sqrt (var [d ])) + beta [d ];
220
+ }
221
+ }
222
+ }
223
+ else {
224
+ for (int t = 0 ; t < in_T ; t ++ ){
225
+ for (int d = 0 ; d < in_channels ; d ++ ){
226
+ output_signal [t * in_channels + d ] = gamma [d ]* ((input_signal [t * in_channels + d ] - mean [d ])/sqrt (var [d ])) + beta [d ];
227
+ }
219
228
}
220
229
}
221
230
}
222
231
else {
223
- for (int t = 0 ; t < in_T ; t ++ ){
224
- for (int d = 0 ; d < in_channels ; d ++ ){
225
- output_signal [t * in_channels + d ] = (input_signal [t * in_channels + d ] - mean [d ])/stddev [d ];
232
+ if (in_place ){
233
+ for (int t = 0 ; t < in_T ; t ++ ){
234
+ for (int d = 0 ; d < in_channels ; d ++ ){
235
+ input_signal [t * in_channels + d ] = ((input_signal [t * in_channels + d ] - mean [d ])/sqrt (var [d ]));
236
+ }
237
+ }
238
+ }
239
+ else {
240
+ for (int t = 0 ; t < in_T ; t ++ ){
241
+ for (int d = 0 ; d < in_channels ; d ++ ){
242
+ output_signal [t * in_channels + d ] = ((input_signal [t * in_channels + d ] - mean [d ])/sqrt (var [d ]));
243
+ }
226
244
}
227
245
}
228
246
}
0 commit comments