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()))