def print_net()

in lib/utils/misc.py [0:0]


def print_net(model):
    logger.info("Printing Model: {}".format(model.net.Name()))
    master_gpu = 'gpu_{}'.format(cfg.ROOT_GPU_ID)
    op_output = model.net.Proto().op
    model_params = model.GetAllParams(master_gpu)
    for idx in range(len(op_output)):
        input_b = model.net.Proto().op[idx].input
        # for simplicity: only print the first output;
        # not recommended if there are split layers.
        output_b = str(model.net.Proto().op[idx].output[0])
        type_b = model.net.Proto().op[idx].type
        if output_b.find(master_gpu) >= 0:
            # Only print the forward pass network
            if output_b.find('grad') >= 0:
                break
            output_shape = np.array(workspace.FetchBlob(str(output_b))).shape
            first_blob = True
            suffix = ' ------- (op: {:s})'.format(type_b)
            for j in range(len(input_b)):
                if input_b[j] in model_params:
                        continue
                input_shape = np.array(
                    workspace.FetchBlob(str(input_b[j]))).shape
                if input_shape != ():
                    logger.info(
                        '{:28s}: {:20s} => {:36s}: {:20s}{}'.format(
                            unscope_name(str(input_b[j])),
                            '{}'.format(input_shape),  # suppress warning
                            unscope_name(str(output_b)),
                            '{}'.format(output_shape),
                            suffix
                        ))
                    if first_blob:
                        first_blob = False
                        suffix = ' ------|'
    logger.info("End of model: {}".format(model.net.Name()))