Esempio n. 1
0
 def max_output_bit_width(self, input_bit_width, weight_bit_width):
     max_input_val = max_uint(bit_width=input_bit_width, narrow_range=False)
     max_fc_val = self.weight_quant.tensor_quant.int_quant.max_uint(
         weight_bit_width)
     max_output_val = max_input_val * max_fc_val * self.in_features
     output_bit_width = ceil_ste(torch.log2(max_output_val))
     return output_bit_width
Esempio n. 2
0
 def max_output_bit_width(self, input_bit_width, weight_bit_width):
     max_uint_input = max_uint(bit_width=input_bit_width,
                               narrow_range=False)
     max_kernel_val = self.weight_quant.tensor_quant.int_quant.max_uint(
         weight_bit_width)
     group_size = self.out_channels // self.groups
     max_uint_output = max_uint_input * max_kernel_val * self.kernel_size[
         0] * self.kernel_size[1] * group_size
     max_output_bit_width = ceil_ste(torch.log2(max_uint_output))
     return max_output_bit_width
 def __add__(self, other):
     QuantTensor.check_input_type(other)
     self.check_scaling_factors_same(other)
     output_tensor = self.tensor + other.tensor
     output_scale = (self.scale + other.scale) / 2
     max_uint_val = max_uint(narrow_range=False, bit_width=self.bit_width)
     max_uint_val += max_uint(narrow_range=False, bit_width=other.bit_width)
     output_bit_width = ceil_ste(torch.log2(max_uint_val))
     output = pack_quant_tensor(output_tensor, output_scale,
                                output_bit_width)
     return output
Esempio n. 4
0
 def forward(self, x: torch.Tensor):
     return ceil_ste(x)
Esempio n. 5
0
 def max_output_bit_width(self, input_bit_width):
     max_uint_input = max_uint(bit_width=input_bit_width,
                               narrow_range=False)
     max_uint_output = max_uint_input * self.kernel_size * self.kernel_size
     max_output_bit_width = ceil_ste(torch.log2(max_uint_output))
     return max_output_bit_width
 def max_output_bit_width(self, input_bit_width):
     max_input_val = max_uint(bit_width=input_bit_width, narrow_range=False)
     max_output_val = max_input_val * self.in_channels
     output_bit_width = ceil_ste(torch.log2(max_output_val))
     return output_bit_width