| 329 | // ------------------------------------------------------------------------------------ |
| 330 | |
| 331 | void batch_normalize_inference ( |
| 332 | const double eps, |
| 333 | resizable_tensor& dest, |
| 334 | const tensor& src, |
| 335 | const tensor& gamma, |
| 336 | const tensor& beta, |
| 337 | const tensor& running_means, |
| 338 | const tensor& running_variances |
| 339 | ) |
| 340 | { |
| 341 | DLIB_CASSERT( |
| 342 | gamma.num_samples() == 1 && |
| 343 | gamma.nr() == src.nr() && |
| 344 | gamma.nc() == src.nc() && |
| 345 | gamma.k() == src.k() && |
| 346 | have_same_dimensions(gamma, beta) && |
| 347 | have_same_dimensions(gamma, running_means) && |
| 348 | have_same_dimensions(gamma, running_variances) && |
| 349 | eps > 0, |
| 350 | "\ngamma.num_samples(): " << gamma.num_samples() << |
| 351 | "\ngamma.k(): " << gamma.k() << |
| 352 | "\ngamma.nr(): " << gamma.nr() << |
| 353 | "\ngamma.nc(): " << gamma.nc() << |
| 354 | "\nbeta.num_samples(): " << beta.num_samples() << |
| 355 | "\nbeta.k(): " << beta.k() << |
| 356 | "\nbeta.nr(): " << beta.nr() << |
| 357 | "\nbeta.nc(): " << beta.nc() << |
| 358 | "\nrunning_means.num_samples(): " << running_means.num_samples() << |
| 359 | "\nrunning_means.k(): " << running_means.k() << |
| 360 | "\nrunning_means.nr(): " << running_means.nr() << |
| 361 | "\nrunning_means.nc(): " << running_means.nc() << |
| 362 | "\nrunning_variances.num_samples(): " << running_variances.num_samples() << |
| 363 | "\nrunning_variances.k(): " << running_variances.k() << |
| 364 | "\nrunning_variances.nr(): " << running_variances.nr() << |
| 365 | "\nrunning_variances.nc(): " << running_variances.nc() << |
| 366 | "\nsrc.k(): " << src.k() << |
| 367 | "\nsrc.nr(): " << src.nr() << |
| 368 | "\nsrc.nc(): " << src.nc() << |
| 369 | "\neps: " << eps |
| 370 | ); |
| 371 | const float in_scale = 1; |
| 372 | const float out_scale = 0; |
| 373 | |
| 374 | dest.copy_size(src); |
| 375 | |
| 376 | CHECK_CUDNN(cudnnBatchNormalizationForwardInference( |
| 377 | context(), |
| 378 | CUDNN_BATCHNORM_PER_ACTIVATION, |
| 379 | &in_scale, |
| 380 | &out_scale, |
| 381 | descriptor(src), |
| 382 | src.device(), |
| 383 | descriptor(dest), |
| 384 | dest.device(), |
| 385 | descriptor(gamma), |
| 386 | gamma.device(), |
| 387 | beta.device(), |
| 388 | running_means.device(), |
nothing calls this directly
no test coverage detected