# tensorplay.functional.fake_quantize_per_channel_affine Source: https://www.tensorplay.cn/docs/generated/tensorplay.functional.fake_quantize_per_channel_affine.html ```python tensorplay.functional.fake_quantize_per_channel_affine(input, scale, zero_point, axis, quant_min, quant_max) → Tensor ``` Returns a new tensor with the data in input fake quantized per channel using scale, zero_point, quant_min and quant_max, across the channel specified by axis. $$\text{output} = ( min( \text{quant\_max}, max( \text{quant\_min}, \text{std::nearby\_int}(\text{input} / \text{scale}) + \text{zero\_point} ) ) - \text{zero\_point} ) \times \text{scale}$$ Parameters: - input ([Tensor](/docs/generated/tensorplay.Tensor.html#tensorplay.Tensor)) – the input value(s), in tensorplay.float32 - scale ([Tensor](/docs/generated/tensorplay.Tensor.html#tensorplay.Tensor)) – quantization scale, per channel in tensorplay.float32 - zero_point ([Tensor](/docs/generated/tensorplay.Tensor.html#tensorplay.Tensor)) – quantization zero_point, per channel in tensorplay.int32 or tensorplay.half or tensorplay.float32 - axis (int32) – channel axis - quant_min (int64) – lower bound of the quantized domain - quant_max (int64) – upper bound of the quantized domain Returns: A newly fake_quantized per channel tensorplay.float32 tensor Return type: [Tensor](/docs/generated/tensorplay.Tensor.html#tensorplay.Tensor) Example: ``` >>> x = tensorplay.randn(2, 2, 2) >>> x tensor([[[-0.2525, -0.0466], [ 0.3491, -0.2168]], [[-0.5906, 1.6258], [ 0.6444, -0.0542]]]) >>> scales = (tensorplay.randn(2) + 1) * 0.05 >>> scales tensor([0.0475, 0.0486]) >>> zero_points = tensorplay.zeros(2).to(tensorplay.int32) >>> zero_points tensor([0, 0]) >>> tensorplay.fake_quantize_per_channel_affine(x, scales, zero_points, 1, 0, 255) tensor([[[0.0000, 0.0000], [0.3405, 0.0000]], [[0.0000, 1.6134], [0.6323, 0.0000]]]) ```