MCPcopy Create free account
hub / github.com/davisking/dlib / batch_normalize

Function batch_normalize

dlib/cuda/cudnn_dlibapi.cpp:393–466  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

391 }
392
393 void batch_normalize (
394 const double eps,
395 resizable_tensor& dest,
396 resizable_tensor& means,
397 resizable_tensor& invstds,
398 const double averaging_factor,
399 resizable_tensor& running_means,
400 resizable_tensor& running_variances,
401 const tensor& src,
402 const tensor& gamma,
403 const tensor& beta
404 )
405 {
406 DLIB_CASSERT(0 <= averaging_factor && averaging_factor <= 1, "averaging_factor: " << averaging_factor);
407 DLIB_CASSERT(averaging_factor==1 || have_same_dimensions(running_means,means));
408 DLIB_CASSERT(averaging_factor==1 || have_same_dimensions(running_variances,invstds));
409 DLIB_CASSERT(
410 src.num_samples() > 1 &&
411 gamma.num_samples() == 1 &&
412 beta.num_samples() == 1 &&
413 gamma.nr() == beta.nr() && beta.nr() == src.nr() &&
414 gamma.nc() == beta.nc() && beta.nc() == src.nc() &&
415 gamma.k() == beta.k() && beta.k() == src.k() &&
416 eps > 0,
417 "\ngamma.num_samples(): " << gamma.num_samples() <<
418 "\ngamma.k(): " << gamma.k() <<
419 "\ngamma.nr(): " << gamma.nr() <<
420 "\ngamma.nc(): " << gamma.nc() <<
421 "\nbeta.num_samples(): " << beta.num_samples() <<
422 "\nbeta.k(): " << beta.k() <<
423 "\nbeta.nr(): " << beta.nr() <<
424 "\nbeta.nc(): " << beta.nc() <<
425 "\nsrc.k(): " << src.k() <<
426 "\nsrc.nr(): " << src.nr() <<
427 "\nsrc.nc(): " << src.nc() <<
428 "\neps: " << eps
429 );
430
431 const float in_scale = 1;
432 const float out_scale = 0;
433
434 dest.copy_size(src);
435 means.set_size(1, src.k(), src.nr(), src.nc());
436 invstds.copy_size(means);
437 running_means.copy_size(means);
438 running_variances.copy_size(means);
439 // cuDNN requires that running_means and running_variances be initialized to
440 // some valid float values even if the averaging factor would have ignored
441 // them.
442 if (averaging_factor == 1)
443 {
444 running_means = 0;
445 running_variances = 1;
446 }
447
448 CHECK_CUDNN(cudnnBatchNormalizationForwardTraining(
449 context(),
450 CUDNN_BATCHNORM_PER_ACTIVATION,

Callers

nothing calls this directly

Calls 10

descriptorFunction · 0.85
copy_sizeMethod · 0.80
have_same_dimensionsFunction · 0.70
contextFunction · 0.70
num_samplesMethod · 0.45
nrMethod · 0.45
ncMethod · 0.45
kMethod · 0.45
set_sizeMethod · 0.45
deviceMethod · 0.45

Tested by

no test coverage detected