Ejemplo n.º 1
0
 def __init__(self,
              kernel_size: int,
              stride: int = None,
              signed: bool = True,
              min_overall_bit_width: Optional[int] = 2,
              max_overall_bit_width: Optional[int] = 32,
              quant_type: QuantType = QuantType.FP,
              lsb_trunc_bit_width_impl_type=BitWidthImplType.CONST):
     QuantLayer.__init__(self,
                         compute_output_scale=True,
                         compute_output_bit_width=True,
                         return_quant_tensor=True)
     AvgPool2d.__init__(self, kernel_size=kernel_size, stride=stride)
     ls_bit_width_to_trunc = math.ceil(math.log2(kernel_size * kernel_size))
     self.signed = signed
     self.quant_type = quant_type
     explicit_rescaling = True  # we are explicitly rescaling as we are replacing the div in avg with trunc
     self.accumulator_quant = TruncQuantProxy(
         signed=signed,
         quant_type=quant_type,
         trunc_at_least_init_val=True,
         ls_bit_width_to_trunc=ls_bit_width_to_trunc,
         min_overall_bit_width=min_overall_bit_width,
         max_overall_bit_width=max_overall_bit_width,
         lsb_trunc_bit_width_impl_type=lsb_trunc_bit_width_impl_type,
         explicit_rescaling=explicit_rescaling,
         override_pretrained_bit_width=False)
Ejemplo n.º 2
0
 def __init__(self,
              kernel_size: Union[int, Tuple[int, int]],
              stride: Union[int, Tuple[int, int]] = None,
              trunc_quant: Optional[AccQuantType] = TruncTo8bit,
              return_quant_tensor: bool = True,
              **kwargs):
     AvgPool2d.__init__(self, kernel_size=kernel_size, stride=stride)
     QuantLayerMixin.__init__(self, return_quant_tensor)
     QuantTruncMixin.__init__(self, trunc_quant=trunc_quant, **kwargs)
Ejemplo n.º 3
0
 def __init__(self,
              kernel_size: Union[int, Tuple[int, int]],
              stride: Union[int, Tuple[int, int]] = None,
              trunc_quant: Union[AccQuantProxyProtocol,
                                 Type[Injector]] = TruncTo8bit,
              return_quant_tensor: bool = True,
              update_injector: Callable = update_trunc_quant_injector,
              **kwargs):
     AvgPool2d.__init__(self, kernel_size=kernel_size, stride=stride)
     QuantLayerMixin.__init__(self, return_quant_tensor)
     QuantTruncMixin.__init__(self,
                              trunc_quant=trunc_quant,
                              update_injector=update_injector,
                              **kwargs)
Ejemplo n.º 4
0
 def __init__(self,
              kernel_size: int,
              stride: int = None,
              trunc_quant: Union[AccQuantProxyProtocol,
                                 Type[Injector]] = DefaultTruncQI,
              return_quant_tensor: bool = True,
              update_injector: Callable = update_trunc_quant_injector,
              **kwargs):
     AvgPool2d.__init__(self, kernel_size=kernel_size, stride=stride)
     QuantLayerMixin.__init__(self, return_quant_tensor)
     QuantTruncMixin.__init__(self,
                              trunc_quant=trunc_quant,
                              update_injector=update_injector,
                              ls_bit_width_to_trunc=math.ceil(
                                  math.log2(kernel_size * kernel_size)),
                              **kwargs)