oneAPI Deep Neural Network Library (oneDNN)
Performance library for Deep Learning
1.96.0
Batch Normalization

A primitive to perform batch normalization. More...

Classes

struct  dnnl::batch_normalization_forward
 Batch normalization forward propagation primitive. More...
 
struct  dnnl::batch_normalization_backward
 Batch normalization backward propagation primitive. More...
 
struct  dnnl_batch_normalization_desc_t
 A descriptor of a Batch Normalization operation. More...
 

Functions

dnnl_status_t DNNL_API dnnl_batch_normalization_forward_desc_init (dnnl_batch_normalization_desc_t *bnrm_desc, dnnl_prop_kind_t prop_kind, const dnnl_memory_desc_t *data_desc, float epsilon, unsigned flags)
 Initializes a descriptor for a batch normalization forward propagation primitive. More...
 
dnnl_status_t DNNL_API dnnl_batch_normalization_backward_desc_init (dnnl_batch_normalization_desc_t *bnrm_desc, dnnl_prop_kind_t prop_kind, const dnnl_memory_desc_t *diff_data_desc, const dnnl_memory_desc_t *data_desc, float epsilon, unsigned flags)
 Initializes a descriptor for a batch normalization backward propagation primitive. More...
 

Detailed Description

A primitive to perform batch normalization.

Both forward and backward propagation primitives support in-place operation; that is, src and dst can refer to the same memory for forward propagation, and diff_dst and diff_src can refer to the same memory for backward propagation.

The batch normalization primitives computations can be controlled by specifying different dnnl::normalization_flags values. For example, batch normalization can compute the mean and variance on its own or take them as inputs. It can either perform scaling and shifting using gamma and beta parameters or not. Optionally, it can also perform a fused ReLU, which in case of training would also require a workspace.

See also
Batch Normalization in developer guide

Function Documentation

◆ dnnl_batch_normalization_forward_desc_init()

dnnl_status_t DNNL_API dnnl_batch_normalization_forward_desc_init ( dnnl_batch_normalization_desc_t bnrm_desc,
dnnl_prop_kind_t  prop_kind,
const dnnl_memory_desc_t data_desc,
float  epsilon,
unsigned  flags 
)

Initializes a descriptor for a batch normalization forward propagation primitive.

Note
In-place operation is supported: the dst can refer to the same memory as the src.
Parameters
bnrm_descOutput descriptor for batch normalization primitive.
prop_kindPropagation kind. Possible values are dnnl_forward_training and dnnl_forward_inference.
data_descSource and destination memory descriptor.
epsilonBatch normalization epsilon parameter.
flagsBatch normalization flags (dnnl_normalization_flags_t).
Returns
dnnl_success on success and a status describing the error otherwise.

◆ dnnl_batch_normalization_backward_desc_init()

dnnl_status_t DNNL_API dnnl_batch_normalization_backward_desc_init ( dnnl_batch_normalization_desc_t bnrm_desc,
dnnl_prop_kind_t  prop_kind,
const dnnl_memory_desc_t diff_data_desc,
const dnnl_memory_desc_t data_desc,
float  epsilon,
unsigned  flags 
)

Initializes a descriptor for a batch normalization backward propagation primitive.

Note
In-place operation is supported: the diff_dst can refer to the same memory as the diff_src.
Parameters
bnrm_descOutput descriptor for batch normalization primitive.
prop_kindPropagation kind. Possible values are dnnl_backward_data and dnnl_backward (diffs for all parameters are computed in this case).
diff_data_descDiff source and diff destination memory descriptor.
data_descSource memory descriptor.
epsilonBatch normalization epsilon parameter.
flagsBatch normalization flags (dnnl_normalization_flags_t).
Returns
dnnl_success on success and a status describing the error otherwise.