Source code for experimental_experiment.reference.quantized_tensor
importnumpyasnp
[docs]classQuantizedTensor:""" Quantizes a vector in range [0, 255]. :param tensor: original tensor """def__init__(self,tensor):_min=tensor.min()_max=tensor.max()_min=min(_min,0)_max=max(_max,0)qmin=0qmax=255self.scale_=np.array((_max-_min)/(qmax-qmin),dtype=tensor.dtype)initial_zero_point=qmin-_min/self.scale_self.zero_point_=np.array(int(max(qmin,min(qmax,initial_zero_point))),dtype=np.uint8)self.quantized_=np.maximum(0,np.minimum(qmax,(tensor/self.scale_).astype(int)+self.zero_point_)).astype(self.zero_point_.dtype)@propertydefshape(self):"accessor"returnself.quantized_.shape@propertydefscale(self):"accessor"returnself.scale_@propertydefzero_point(self):"accessor"returnself.zero_point_@propertydefqtensor(self):"accessor"returnself.quantized_