def dequantize(self, G: NNGraph): qrecs = G.quantization LOG.info("dequantizing graph parameters") for _, node, _, fnode in G.nodes_iterator(): qrec = qrecs[NodeId(node, fnode)] anode = node if fnode is None else fnode handler = self.handlers[1].get(anode.__class__) if handler: handler.dequantize(anode, qrec)
def dequantize(self, G: NNGraph): qrecs = G.quantization LOG.info("dequantizing graph parameters") for _, node, _, fnode in G.nodes_iterator(): qrec = qrecs[NodeId(node, fnode)] if isinstance(node, ConstantInputParameters): node.value = qrec.out_q[0].dequantize(node.value) else: anode = node if fnode is None else fnode if isinstance(anode, (FcParameters, Conv2DParameters)): if anode.has_bias: anode.biases = qrec.biases_q.dequantize(anode.biases) anode.weights = qrec.weights_q.dequantize(anode.weights)
def report(self, G: NNGraph, stats): dump_stats = OrderedDict() for step_idx, node, fusion_idx, fnode in G.nodes_iterator(self._yield_fusions): stat = stats[NodeId(node, fnode)] stat = copy.deepcopy(stat) if fusion_idx: name = "{}_{}".format(node.name, fusion_idx) idx = "{}_{}".format(step_idx, fusion_idx) else: name = node.name idx = str(step_idx) dump_stats[name] = stat stat['idx'] = idx return dump_stats_table(dump_stats, do_totals=self._do_totals, threshold=self._threshold)