def filter_stats(G, pnode, fnode, anode, channel_details=None, qrec=None): stats = {} if isinstance(anode, MultiplicativeBiasParameters): if anode.has_mul_bias: stats['mul_biases'] = mul_biases = astats(anode.mul_biases) mul_biases['qstats'] = calculate_qsnrs(anode.mul_biases, mul_biases['ibits'], force_ideal=False) elif qrec and qrec.ktype.startswith('scaled'): stats['mul_biases'] = mul_biases = astats(qrec.mul_biases_fps) mul_biases['qstats'] = calculate_qsnrs(qrec.mul_biases_fps, mul_biases['ibits'], force_ideal=False) in_edges = G.indexed_in_edges(pnode.name) qweights = in_edges[1].from_node.dqvalue qbiases = in_edges[2].from_node.dqvalue stats['biases'] = biases = astats(qbiases) biases['qstats'] = calculate_qsnrs(qbiases, biases['ibits'], force_ideal=False) stats['weights'] = weights = astats( qweights, channel_dim=anode.filter.get_order_idx('out_c'), channel_details=channel_details) weights['qstats'] = calculate_qsnrs(qweights, weights['ibits'], force_ideal=False) # store the statistics into the graph for later use anode.stats = stats stats['step_idx'] = pnode.step_idx return anode.stats
def filter_stats(node): stats = {} if node.has_bias: stats['biases'] = biases = astats(node.biases) biases['qstats'] = calculate_qsnrs(node.biases, biases['ibits'], force_ideal=False) stats['weights'] = weights = astats(node.weights) weights['qstats'] = calculate_qsnrs(node.weights, weights['ibits'], force_ideal=False) # store the statistics into the graph for later use node.stats = stats return node.stats
def gather_stats(activation, force_ideal=False, channel_dim=None, channel_details=None): stat = astats(activation, channel_dim=channel_dim, channel_details=channel_details) stat['qstats'] = calculate_qsnrs(activation, stat['ibits'], force_ideal) return stat
def filter_stats(pnode, fnode, anode, channel_details=None, qrec=None): stats = {} if isinstance(anode, MultiplicativeBiasParameters): if anode.has_mul_bias: stats['mul_biases'] = mul_biases = astats(anode.mul_biases) mul_biases['qstats'] = calculate_qsnrs(anode.mul_biases, mul_biases['ibits'], force_ideal=False) elif isinstance(qrec, MultScalableFilterQuantizationRecord): stats['mul_biases'] = mul_biases = astats(qrec.mul_biases_fps) mul_biases['qstats'] = calculate_qsnrs(qrec.mul_biases_fps, mul_biases['ibits'], force_ideal=False) if anode.has_bias: if qrec: qbiases = qrec.prepare_biases(anode, anode.biases, anode.weights, ktype="float32") else: qbiases = anode.biases stats['biases'] = biases = astats(qbiases) biases['qstats'] = calculate_qsnrs(qbiases, biases['ibits'], force_ideal=False) if qrec: qweights = qrec.prepare_weights(anode, anode.weights, ktype="float32") else: qweights = anode.weights stats['weights'] = weights = astats( qweights, channel_dim=anode.filter.get_order_idx('out_c'), channel_details=channel_details) weights['qstats'] = calculate_qsnrs(qweights, weights['ibits'], force_ideal=False) # store the statistics into the graph for later use anode.stats = stats stats['step_idx'] = pnode.step_idx return anode.stats
def gather_stats(activation, force_ideal=False): stat = astats(activation) stat['qstats'] = calculate_qsnrs(activation, stat['ibits'], force_ideal) return stat