/usr/local/lib64/python3.6/site-packages/torch/nn/quantized/__pycache__
NameSizeModeActions
functional.cpython-36.pyc265370644editdlrm
__init__.cpython-36.pyc1780644editdlrm
Edit: /usr/local/lib64/python3.6/site-packages/torch/nn/quantized/__pycache__/functional.cpython-36.pyc (26537B)
3 EgLo@sdZddlmZmZddlZddlZddlmZddlmZm Z ddl m Z ddl m Z dDd d ZdEd d Zee eedddZee eedddZdddddddejfddZdddddddejfddZdddddddejfddZdFddZdGeeeeeeeeedd d!ZdHd"d#ZdId$d%ZdJeeeeed&d'd(ZdKeeeeeeed*d+d,ZdMeeeeed-d.d/Zeeeed0d1d2Z eeeed3d4d5Z!dNeeeeed&d6d7Z"eed8d9d:Z#eeeed;dd?Z%dPd@dAZ&dQdBdCZ'dS)Rz" Functional interface (quantized).)ListOptionalN)Tensor)_pair_triple)_pair_from_first)BroadcastingList2FTcCs(|jstdtjjj|||||||S)a Applies 2D average-pooling operation in :math:`kH \times kW` regions by step size :math:`sH \times sW` steps. The number of output features is equal to the number of input planes. .. note:: The input quantization parameters propagate to the output. See :class:`~torch.nn.quantized.AvgPool2d` for details and output shape. Args: input: quantized input tensor :math:`(\text{minibatch} , \text{in\_channels} , iH , iW)` kernel_size: size of the pooling region. Can be a single number or a tuple `(kH, kW)` stride: stride of the pooling operation. Can be a single number or a tuple `(sH, sW)`. Default: :attr:`kernel_size` padding: implicit zero paddings on both sides of the input. Can be a single number or a tuple `(padH, padW)`. Default: 0 ceil_mode: when True, will use `ceil` instead of `floor` in the formula to compute the output shape. Default: ``False`` count_include_pad: when True, will include the zero-padding in the averaging calculation. Default: ``True`` divisor_override: if specified, it will be used as divisor, otherwise size of the pooling region will be used. Default: None z2Input to 'quantized.avg_pool2d' must be quantized!) is_quantized ValueErrortorchnn functional avg_pool2d)input kernel_sizestridepadding ceil_modecount_include_paddivisor_overriderI/usr/local/lib64/python3.6/site-packages/torch/nn/quantized/functional.pyrs rcCs(|jstdtjjj|||||||S)a Applies 3D average-pooling operation in :math:`kD \ times kH \times kW` regions by step size :math:`sD \times sH \times sW` steps. The number of output features is equal to the number of input planes. .. note:: The input quantization parameters propagate to the output. Args: input: quantized input tensor :math:`(\text{minibatch} , \text{in\_channels} , iH , iW)` kernel_size: size of the pooling region. Can be a single number or a tuple `(kD, kH, kW)` stride: stride of the pooling operation. Can be a single number or a tuple `(sD, sH, sW)`. Default: :attr:`kernel_size` padding: implicit zero paddings on both sides of the input. Can be a single number or a tuple `(padD, padH, padW)`. Default: 0 ceil_mode: when True, will use `ceil` instead of `floor` in the formula to compute the output shape. Default: ``False`` count_include_pad: when True, will include the zero-padding in the averaging calculation. Default: ``True`` divisor_override: if specified, it will be used as divisor, otherwise size of the pooling region will be used. Default: None z2Input to 'quantized.avg_pool3d' must be quantized!)r r r r r avg_pool3d)rrrrrrrrrrr.s r)r output_sizereturncCs|jstdtjjj||S)a Applies a 2D adaptive average pooling over a quantized input signal composed of several quantized input planes. .. note:: The input quantization parameters propagate to the output. See :class:`~torch.nn.quantized.AdaptiveAvgPool2d` for details and output shape. Args: output_size: the target output size (single integer or double-integer tuple) zFInput to 'quantized.functional.adaptive_avg_pool2d' must be quantized!)r r r r r adaptive_avg_pool2d)rrrrrrLs rcCs|jstdtjjj||S)a Applies a 3D adaptive average pooling over a quantized input signal composed of several quantized input planes. .. note:: The input quantization parameters propagate to the output. See :class:`~torch.nn.quantized.AdaptiveAvgPool3d` for details and output shape. Args: output_size: the target output size (single integer or double-integer tuple) zFInput to 'quantized.functional.adaptive_avg_pool3d' must be quantized!)r r r r r adaptive_avg_pool3d)rrrrrr]s rzeros?c Cs|dkrtd|jtjkr$td|jtjkr8td|jdkrJtdt|}t|}t|}tjj j ||||||} tjj j || || S)a Applies a 1D convolution over a quantized 1D input composed of several input planes. See :class:`~torch.nn.quantized.Conv1d` for details and output shape. Args: input: quantized input tensor of shape :math:`(\text{minibatch} , \text{in\_channels} , iW)` weight: quantized filters of shape :math:`(\text{out\_channels} , \frac{\text{in\_channels}}{\text{groups}} , iW)` bias: **non-quantized** bias tensor of shape :math:`(\text{out\_channels})`. The tensor type must be `torch.float`. stride: the stride of the convolving kernel. Can be a single number or a tuple `(sW,)`. Default: 1 padding: implicit paddings on both sides of the input. Can be a single number or a tuple `(padW,)`. Default: 0 dilation: the spacing between kernel elements. Can be a single number or a tuple `(dW,)`. Default: 1 groups: split input into groups, :math:`\text{in\_channels}` should be divisible by the number of groups. Default: 1 padding_mode: the padding mode to use. Only "zeros" is supported for quantized convolution at the moment. Default: "zeros" scale: quantization scale for the output. Default: 1.0 zero_point: quantization zero_point for the output. Default: 0 dtype: quantization data type to use. Default: ``torch.quint8`` Examples:: >>> from torch.nn.quantized import functional as qF >>> filters = torch.randn(33, 16, 3, dtype=torch.float) >>> inputs = torch.randn(20, 16, 50, dtype=torch.float) >>> bias = torch.randn(33, dtype=torch.float) >>> >>> scale, zero_point = 1.0, 0 >>> dtype_inputs = torch.quint8 >>> dtype_filters = torch.qint8 >>> >>> q_filters = torch.quantize_per_tensor(filters, scale, zero_point, dtype_filters) >>> q_inputs = torch.quantize_per_tensor(inputs, scale, zero_point, dtype_inputs) >>> qF.conv1d(q_inputs, q_filters, bias, padding=1, scale=scale, zero_point=zero_point) rzOnly zero-padding is supported!z5Only torch.quint8 is supported for activation tensor!z0Only torch.qint8 is supported for weight tensor!z Input shape must be `(N, C, L)`!) NotImplementedErrordtyper quint8qint8ndimr rops quantizedZconv1d_prepackconv1d) rweightbiasrrdilationgroups padding_modescale zero_pointr" packed_paramsrrrr(os+   r(c Cs|dkrtd|jtjkr$td|jtjkr8td|jdkrJtdt|}t|}t|}tjj j ||||||} tjj j || || S)a Applies a 2D convolution over a quantized 2D input composed of several input planes. See :class:`~torch.nn.quantized.Conv2d` for details and output shape. Args: input: quantized input tensor of shape :math:`(\text{minibatch} , \text{in\_channels} , iH , iW)` weight: quantized filters of shape :math:`(\text{out\_channels} , \frac{\text{in\_channels}}{\text{groups}} , kH , kW)` bias: **non-quantized** bias tensor of shape :math:`(\text{out\_channels})`. The tensor type must be `torch.float`. stride: the stride of the convolving kernel. Can be a single number or a tuple `(sH, sW)`. Default: 1 padding: implicit paddings on both sides of the input. Can be a single number or a tuple `(padH, padW)`. Default: 0 dilation: the spacing between kernel elements. Can be a single number or a tuple `(dH, dW)`. Default: 1 groups: split input into groups, :math:`\text{in\_channels}` should be divisible by the number of groups. Default: 1 padding_mode: the padding mode to use. Only "zeros" is supported for quantized convolution at the moment. Default: "zeros" scale: quantization scale for the output. Default: 1.0 zero_point: quantization zero_point for the output. Default: 0 dtype: quantization data type to use. Default: ``torch.quint8`` Examples:: >>> from torch.nn.quantized import functional as qF >>> filters = torch.randn(8, 4, 3, 3, dtype=torch.float) >>> inputs = torch.randn(1, 4, 5, 5, dtype=torch.float) >>> bias = torch.randn(8, dtype=torch.float) >>> >>> scale, zero_point = 1.0, 0 >>> dtype_inputs = torch.quint8 >>> dtype_filters = torch.qint8 >>> >>> q_filters = torch.quantize_per_tensor(filters, scale, zero_point, dtype_filters) >>> q_inputs = torch.quantize_per_tensor(inputs, scale, zero_point, dtype_inputs) >>> qF.conv2d(q_inputs, q_filters, bias, padding=1, scale=scale, zero_point=zero_point) rzOnly zero-padding is supported!z5Only torch.quint8 is supported for activation tensor!z0Only torch.qint8 is supported for weight tensor!z#Input shape must be `(N, C, H, W)`!) r!r"r r#r$r%r rr&r'Zconv2d_prepackconv2d) rr)r*rrr+r,r-r.r/r"r0rrrr2s+   r2c Cs|dkrtd|jtjkr$td|jtjkr8td|jdkrJtdt|}t|}t|}tjj j ||||||} tjj j || || S)a] Applies a 3D convolution over a quantized 3D input composed of several input planes. See :class:`~torch.nn.quantized.Conv3d` for details and output shape. Args: input: quantized input tensor of shape :math:`(\text{minibatch} , \text{in\_channels} , iD , iH , iW)` weight: quantized filters of shape :math:`(\text{out\_channels} , \frac{\text{in\_channels}}{\text{groups}} , kD , kH , kW)` bias: **non-quantized** bias tensor of shape :math:`(\text{out\_channels})`. The tensor type must be `torch.float`. stride: the stride of the convolving kernel. Can be a single number or a tuple `(sD, sH, sW)`. Default: 1 padding: implicit paddings on both sides of the input. Can be a single number or a tuple `(padD, padH, padW)`. Default: 0 dilation: the spacing between kernel elements. Can be a single number or a tuple `(dD, dH, dW)`. Default: 1 groups: split input into groups, :math:`\text{in\_channels}` should be divisible by the number of groups. Default: 1 padding_mode: the padding mode to use. Only "zeros" is supported for quantized convolution at the moment. Default: "zeros" scale: quantization scale for the output. Default: 1.0 zero_point: quantization zero_point for the output. Default: 0 dtype: quantization data type to use. Default: ``torch.quint8`` Examples:: >>> from torch.nn.quantized import functional as qF >>> filters = torch.randn(8, 4, 3, 3, 3, dtype=torch.float) >>> inputs = torch.randn(1, 4, 5, 5, 5, dtype=torch.float) >>> bias = torch.randn(8, dtype=torch.float) >>> >>> scale, zero_point = 1.0, 0 >>> dtype_inputs = torch.quint8 >>> dtype_filters = torch.qint8 >>> >>> q_filters = torch.quantize_per_tensor(filters, scale, zero_point, dtype_filters) >>> q_inputs = torch.quantize_per_tensor(inputs, scale, zero_point, dtype_inputs) >>> qF.conv3d(q_inputs, q_filters, bias, padding=1, scale=scale, zero_point=zero_point) rzOnly zero-padding is supported!z5Only torch.quint8 is supported for activation tensor!z0Only torch.qint8 is supported for weight tensor!z&Input shape must be `(N, C, D, H, W)`!) r!r"r r#r$r%r rr&r'Zconv3d_prepackconv3d) rr)r*rrr+r,r-r.r/r"r0rrrr4s,   r4nearestcCs$|jstdtjjj|||||S)aDown/up samples the input to either the given :attr:`size` or the given :attr:`scale_factor` See :func:`torch.nn.functional.interpolate` for implementation details. The input dimensions are interpreted in the form: `mini-batch x channels x [optional depth] x [optional height] x width`. .. note:: The input quantization parameters propagate to the output. .. note:: Only 2D/3D input is supported for quantized inputs .. note:: Only the following modes are supported for the quantized inputs: - `bilinear` - `nearest` Args: input (Tensor): the input tensor size (int or Tuple[int] or Tuple[int, int] or Tuple[int, int, int]): output spatial size. scale_factor (float or Tuple[float]): multiplier for spatial size. Has to match input size if it is a tuple. mode (str): algorithm used for upsampling: ``'nearest'`` | ``'bilinear'`` align_corners (bool, optional): Geometrically, we consider the pixels of the input and output as squares rather than points. If set to ``True``, the input and output tensors are aligned by the center points of their corner pixels, preserving the values at the corner pixels. If set to ``False``, the input and output tensors are aligned by the corner points of their corner pixels, and the interpolation uses edge value padding for out-of-boundary values, making this operation *independent* of input size when :attr:`scale_factor` is kept the same. This only has an effect when :attr:`mode` is ``'bilinear'``. Default: ``False`` z3Input to 'quantized.interpolate' must be quantized!)r r r r r interpolate)rsize scale_factormode align_cornersrrrr6!s$r6)rr)r*r.r/rcCsD|dkr|j}|dkr |j}tjjj||}tjjj||||S)a Applies a linear transformation to the incoming quantized data: :math:`y = xA^T + b`. See :class:`~torch.nn.quantized.Linear` .. note:: Current implementation packs weights on every call, which has penalty on performance. If you want to avoid the overhead, use :class:`~torch.nn.quantized.Linear`. Args: input (Tensor): Quantized input of type `torch.quint8` weight (Tensor): Quantized weight of type `torch.qint8` bias (Tensor): None or fp32 bias of type `torch.float` scale (double): output scale. If None, derived from the input scale zero_point (long): output zero point. If None, derived from the input zero_point Shape: - Input: :math:`(N, *, in\_features)` where `*` means any number of additional dimensions - Weight: :math:`(out\_features, in\_features)` - Bias: :math:`(out\_features)` - Output: :math:`(N, *, out\_features)` N)Zq_scaleZ q_zero_pointr r&r'Zlinear_prepacklinear)rr)r*r.r/Z_packed_paramsrrrr;Js r;cCs@|r td|dkr&tjjttg}tjjj|||||||S)zApplies a 1D max pooling over a quantized input signal composed of several quantized input planes. .. note:: The input quantization parameters are propagated to the output. See :class:`~torch.nn.quantized.MaxPool1d` for details. z&return_indices is not yet implemented!N) r!r jitannotaterintr r max_pool1d)rrrrr+rreturn_indicesrrrr?ms r?cCs@|r td|dkr&tjjttg}tjjj|||||||S)zApplies a 2D max pooling over a quantized input signal composed of several quantized input planes. .. note:: The input quantization parameters are propagated to the output. See :class:`~torch.nn.quantized.MaxPool2d` for details. z&return_indices is not yet implemented!N) r!r r<r=rr>r r max_pool2d)rrrrr+rr@rrrrA}s rA)rr.r/alpharcCs"|jstdtjjj||||S)aCcelu(input, scale, zero_point, alpha=1.) -> Tensor Applies the quantized CELU function element-wise. .. math:: \text{CELU}(x) = \max(0,x) + \min(0, \alpha * (\exp(x / \alpha) - 1)) Args: input: quantized input alpha: the :math:`\alpha` value for the CELU formulation. Default: 1.0 z,Input to 'quantized.celu' must be quantized!)r r r r&r'celu)rr.r/rBrrrrCs rC{Gz?)rnegative_slopeinplacer.r/cCsz|dk rP|dk rP| stdtj|j|t||jd}tjjj|||d|S|rftjjj ||}ntjjj||}|S)a Quantized version of the. leaky_relu(input, negative_slope=0.01, inplace=False, scale, zero_point) -> Tensor Applies element-wise, :math:`\text{LeakyReLU}(x) = \max(0, x) + \text{negative\_slope} * \min(0, x)` Args: input: Quaintized input negative_slope: The slope of the negative input inplace: Inplace modification of the input tensor scale, zero_point: Scale and zero point of the output tensor. See :class:`~torch.nn.LeakyReLU` for more details. NzCannot rescale with `inplace`)r.r/r")out) AssertionErrorr Z_empty_affine_quantizedshaper>r"_C_nn leaky_reluZ leaky_relu_)rrErFr.r/outputresultrrrrLsrL)rmin_valmax_valrFrcCs6|jstd|r$tjjj|||Stjjj|||S)zLThis is the quantized version of :func:`~torch.nn.functional.hardtanh`. z0Input to 'quantized.hardtanh' must be quantized!)r r r rJrKZ hardtanh_hardtanh)rrOrPrFrrrrQs rQ)rr.r/rcCs"|jstdtjjjj|||S)zThis is the quantized version of :func:`~torch.nn.functional.hardswish`. Args: input: quantized input scale: quantization scale of the output tensor zero_point: quantization zero point of the output tensor z1Input to 'quantized.hardswish' must be quantized!)r r r _opsr&r' hardswish)rr.r/rrrrSsrS)r thresholdvaluercCsB|jstd|dkrtd|dkr.tdtjjjj|||S)a*Applies the quantized version of the threshold function element-wise: .. math:: x = \begin{cases} x & \text{if~} x > \text{threshold} \\ \text{value} & \text{otherwise} \end{cases} See :class:`~torch.nn.Threshold` for more details. z1Input to 'quantized.threshold' must be quantized!Nz'Input to 'threshold' must be specified!z#Input to 'value' must be specified!)r r r rRr&r'rT)rrTrUrrrrTs rTcCs"|jstdtjjj||||S)a This is the quantized version of :func:`~torch.nn.functional.elu`. Args: input: quantized input scale: quantization scale of the output tensor zero_point: quantization zero point of the output tensor alpha: the alpha constant z+Input to 'quantized.elu' must be quantized!)r r r r&r'elu)rr.r/rBrrrrVs rV)rrcCs|jstdtjjj|S)zOThis is the quantized version of :func:`~torch.nn.functional.hardsigmoid`. z3Input to 'quantized.hardsigmoid' must be quantized!)r r r rJrK hardsigmoid)rrrrrWsrW)rmin_max_rcCs|jstdtj|||S)afloat(input, min_, max_) -> Tensor Applies the clamp function element-wise. See :class:`~torch.nn.quantized.clamp` for more details. Args: input: quantized input min_: minimum value for clamping max_: maximum value for clamping z-Input to 'quantized.clamp' must be quantized!)r r r clamp)rrXrYrrrrZs rZcCstjdt|||||S)a2 Upsamples the input to either the given :attr:`size` or the given :attr:`scale_factor` .. warning:: This function is deprecated in favor of :func:`torch.nn.quantized.functional.interpolate`. This is equivalent with ``nn.quantized.functional.interpolate(...)``. See :func:`torch.nn.functional.interpolate` for implementation details. The input dimensions are interpreted in the form: `mini-batch x channels x [optional depth] x [optional height] x width`. .. note:: The input quantization parameters propagate to the output. .. note:: Only 2D input is supported for quantized inputs .. note:: Only the following modes are supported for the quantized inputs: - `bilinear` - `nearest` Args: input (Tensor): quantized input tensor size (int or Tuple[int] or Tuple[int, int] or Tuple[int, int, int]): output spatial size. scale_factor (float or Tuple[float]): multiplier for spatial size. Has to be an integer. mode (string): algorithm used for upsampling: ``'nearest'`` | ``'bilinear'`` align_corners (bool, optional): Geometrically, we consider the pixels of the input and output as squares rather than points. If set to ``True``, the input and output tensors are aligned by the center points of their corner pixels, preserving the values at the corner pixels. If set to ``False``, the input and output tensors are aligned by the corner points of their corner pixels, and the interpolation uses edge value padding for out-of-boundary values, making this operation *independent* of input size when :attr:`scale_factor` is kept the same. This only has an effect when :attr:`mode` is ``'bilinear'``. Default: ``False`` .. warning:: With ``align_corners = True``, the linearly interpolating modes (`bilinear`) don't proportionally align the output and input pixels, and thus the output values can depend on the input size. This was the default behavior for these modes up to version 0.3.1. Since then, the default behavior is ``align_corners = False``. See :class:`~torch.nn.Upsample` for concrete examples on how this affects the outputs. z`nn.quantized.functional.upsample is deprecated. Use nn.quantized.functional.interpolate instead.)warningswarnr6)rr7r8r9r:rrrupsamples2 r]cCstjdt|||dddS)a\Upsamples the input, using bilinear upsampling. .. warning:: This function is deprecated in favor of :func:`torch.nn.quantized.functional.interpolate`. This is equivalent with ``nn.quantized.functional.interpolate(..., mode='bilinear', align_corners=True)``. .. note:: The input quantization parameters propagate to the output. .. note:: Only 2D inputs are supported Args: input (Tensor): quantized input size (int or Tuple[int, int]): output spatial size. scale_factor (int or Tuple[int, int]): multiplier for spatial size zinn.quantized.functional.upsample_bilinear is deprecated. Use nn.quantized.functional.interpolate instead.ZbilinearT)r9r:)r[r\r6)rr7r8rrrupsample_bilinear:s r^cCstjdt|||ddS)atUpsamples the input, using nearest neighbours' pixel values. .. warning:: This function is deprecated in favor of :func:`torch.nn.quantized.functional.interpolate`. This is equivalent with ``nn.quantized.functional.interpolate(..., mode='nearest')``. .. note:: The input quantization parameters propagate to the output. .. note:: Only 2D inputs are supported Args: input (Tensor): quantized input size (int or Tuple[int, int] or Tuple[int, int, int]): output spatial size. scale_factor (int): multiplier for spatial size. Has to be an integer. zhnn.quantized.functional.upsample_nearest is deprecated. Use nn.quantized.functional.interpolate instead.r5)r9)r[r\r6)rr7r8rrrupsample_nearestPs r_)NrFTN)NrFTN)NNr5N)NNN)NrrFF)NrrFF)r)rDFNN)r`rF)r)NNr5N)NN)NN)(__doc__typingrrr[r rZtorch.nn.modules.utilsrrZ torch.nn.quantized.modules.utilsrZtorch.jit.annotationsrrrr>rrr#r(r2r4r6floatr;r?rArCboolrLrQrSrTrVrWrZr]r^r_rrrrsV     87; *        5