(l-onnx-docai-onnx-ml-Normalizer)=
# ai.onnx.ml - Normalizer
(l-onnx-opai-onnx-ml-normalizer-1)=
## Normalizer - 1 (ai.onnx.ml)
### Version
- **name**: [Normalizer (GitHub)](https://github.com/onnx/onnx/blob/main/docs/Operators-ml.md#ai.onnx.ml.Normalizer)
- **domain**: `ai.onnx.ml`
- **since_version**: `1`
- **function**: `False`
- **support_level**: `SupportType.COMMON`
- **shape inference**: `False`
This version of the operator has been available
**since version 1 of domain ai.onnx.ml**.
### Summary
Normalize the input. There are three normalization modes, which have the corresponding formulas,
defined using element-wise infix operators '/' and '^' and tensor-wide functions 'max' and 'sum':
Max: Y = X / max(X)
L1: Y = X / sum(X)
L2: Y = sqrt(X^2 / sum(X^2)}
In all modes, if the divisor is zero, Y == X.
For batches, that is, [N,C] tensors, normalization is done along the C axis. In other words, each row
of the batch is normalized independently.
### Attributes
* **norm - STRING** (default is `'MAX'`):
One of 'MAX,' 'L1,' 'L2'
### Inputs
- **X** (heterogeneous) - **T**:
Data to be encoded, a tensor of shape [N,C] or [C]
### Outputs
- **Y** (heterogeneous) - **tensor(float)**:
Encoded output data
### Type Constraints
* **T** in ( `tensor(double)`, `tensor(float)`, `tensor(int32)`, `tensor(int64)` ):
The input must be a tensor of a numeric type.