Spec-Zone.ru › PyTorch 2

torch.fake_quantize_per_channel_affine

torch.fake_quantize_per_channel_affine(input, scale, zero_point, axis, quant_min, quant_max) → Tensor

Возвращает новый тензор с данными в input с фейковой квантизацией по каналу, используя scale, zero_point, quant_min и quant_max, по каналу, указанному в axis.

output=(min(quant_max,max(quant_min,std::nearby_int(input/scale)+zero_point))−zero_point)×scale\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}
Параметры
  • input (Tensor) – входное(ые) значение(я), в torch.float32
  • scale (Tensor) – масштаб квантования, по каналу в torch.float32
  • zero_point (Tensor) – квантовое смещение, по каналу в torch.int32 или torch.half или torch.float32
  • axis (int32) – ось канала
  • quant_min (int64) – нижняя граница квантованного диапазона
  • quant_max (int64) – верхняя граница квантованного диапазона
Возвращает

Новый квантованный по каналу torch.float32 тензор

Тип возвращаемого значения

Tensor

Пример:

>>> x = torch.randn(2, 2, 2)
>>> x
tensor([[[-0.2525, -0.0466],
         [ 0.3491, -0.2168]],

        [[-0.5906,  1.6258],
         [ 0.6444, -0.0542]]])
>>> scales = (torch.randn(2) + 1) * 0.05
>>> scales
tensor([0.0475, 0.0486])
>>> zero_points = torch.zeros(2).to(torch.int32)
>>> zero_points
tensor([0, 0])
>>> torch.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]]])

© 2024, PyTorch Contributors
PyTorch has a BSD-style license, as found in the LICENSE file.
https://pytorch.org/docs/2.1/generated/torch.fake_quantize_per_channel_affine.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API