---
title: "quantize(batchSize:input:output:axis:scale:bias:filterParameters:)"
framework: accelerate
role: symbol
role_heading: Type Method
path: "accelerate/bnns/quantize(batchsize:input:output:axis:scale:bias:filterparameters:)"
---

# quantize(batchSize:input:output:axis:scale:bias:filterParameters:)

Quantizes the input tensor and writes the result to the output tensor.

## Declaration

```swift
static func quantize(batchSize: Int, input: BNNSNDArrayDescriptor, output: BNNSNDArrayDescriptor, axis: Int? = nil, scale: BNNSNDArrayDescriptor?, bias: BNNSNDArrayDescriptor?, filterParameters: BNNSFilterParameters? = nil) throws
```

## Parameters

- `batchSize`: The number of input-output pairs to process.
- `input`: The descriptor of the input.
- `output`: The descriptor of the output.
- `axis`: The index of the axis to which the function applies scale and bias. Set to nil to dequantize the entire tensor using scale and bias.
- `scale`: The scale, set to nil for a scale of 1.0.
- `bias`: The bias, set to nil for a bias of 0.0.
- `filterParameters`: Runtime filter parameters.

## Discussion

Discussion The following code quantizes a single-precision matrix to a 16-bit integer matrix. The code applies the scale along the zeroth axis and, therefore, the scale tensor contains four elements. static func quantize() {          let inputValues = [1, 2, 3, 4,                        5, 6, 7, 8] as [Float]          let input = BNNSNDArrayDescriptor.allocate(         initializingFrom: inputValues,         shape: .matrixRowMajor(4, 2))          let output = BNNSNDArrayDescriptor.allocateUninitialized(         scalarType: Int16.self,         shape: input.shape)          let scale = BNNSNDArrayDescriptor.allocate(         initializingFrom: [1, 10, 100, 1000] as [Float],         shape: .vector(4))          try? BNNS.quantize(batchSize: 1,                        input: input,                        output: output,                        axis: 0,                        scale: scale,                        bias: nil)

// Prints:     //  [1, 20, 300, 4000,     //   5, 60, 700, 8000]     print(output.makeArray(of: Int16.self)!)          input.deallocate()     output.deallocate()     scale.deallocate() }

## See Also

### Related Documentation

- [BNNSQuantizerFunctionQuantize](accelerate/bnnsquantizerfunctionquantize.md)

### Quantization functions

- [dequantize(batchSize:input:output:axis:scale:bias:filterParameters:)](accelerate/bnns/dequantize(batchsize:input:output:axis:scale:bias:filterparameters:).md)
- [BNNSQuantizerFunction](accelerate/bnnsquantizerfunction.md)
- [BNNSLayerParametersQuantization](accelerate/bnnslayerparametersquantization.md)
- [BNNSDirectApplyQuantizer(_:_:_:_:_:)](accelerate/bnnsdirectapplyquantizer(_:_:_:_:_:).md)
