Exemplo n.º 1
0
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
Exemplo n.º 2
0
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
Exemplo n.º 3
0
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
Exemplo n.º 4
0
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
Exemplo n.º 5
0
def gather_stats(activation, force_ideal=False):
    stat = astats(activation)
    stat['qstats'] = calculate_qsnrs(activation, stat['ibits'], force_ideal)
    return stat