[docs]classLinearReLU(nnqd.Linear):r""" A LinearReLU module fused from Linear and ReLU modules that can be used for dynamic quantization. Supports both, FP16 and INT8 quantization. We adopt the same interface as :class:`torch.ao.nn.quantized.dynamic.Linear`. Attributes: Same as torch.ao.nn.quantized.dynamic.Linear Examples:: >>> # xdoctest: +SKIP >>> m = nn.intrinsic.quantized.dynamic.LinearReLU(20, 30) >>> input = torch.randn(128, 20) >>> output = m(input) >>> print(output.size()) torch.Size([128, 30]) """_FLOAT_MODULE=nni.LinearReLU# type: ignore[assignment]def__init__(self,in_features,out_features,bias=True,dtype=torch.qint8):super().__init__(in_features,out_features,bias,dtype)defforward(self,x:torch.Tensor)->torch.Tensor:ifself._packed_params.dtype==torch.qint8:# TODO check if we should set reduce_rage = True by default hereY=torch.ops.quantized.linear_relu_dynamic(x,self._packed_params._packed_params,reduce_range=True)elifself._packed_params.dtype==torch.float16:Y=torch.ops.quantized.linear_relu_dynamic_fp16(x,self._packed_params._packed_params)else:raiseRuntimeError("Unsupported dtype on dynamic quantized linear relu!")returnY.to(x.dtype)def_get_name(self):return"DynamicQuantizedLinearReLU"@classmethoddeffrom_float(cls,mod,use_precomputed_fake_quant=False):returnsuper().from_float(mod,use_precomputed_fake_quant=use_precomputed_fake_quant)@classmethoddeffrom_reference(cls,ref_qlinear_relu):returnsuper().from_reference(ref_qlinear_relu[0])
Docs
Access comprehensive developer documentation for PyTorch
To analyze traffic and optimize your experience, we serve cookies on this site. By clicking or navigating, you agree to allow our usage of cookies. As the current maintainers of this site, Facebook’s Cookies Policy applies. Learn more, including about available controls: Cookies Policy.