#!/usr/bin/env python import argparse import caffe import numpy as np import scipy.io if __name__ == "__main__": # Parse arguments parser = argparse.ArgumentParser('Extract CNN hyper-parameters') parser.add_argument('-m', dest='modelFile', type=str, required=True, help='Caffe model file') parser.add_argument('-n', dest='netFile', type=str, required=True, help='Caffe netlist') args = parser.parse_args() # Create Caffe Net net = caffe.Net(args.netFile, 1, weights=args.modelFile) # Read and dump blobs for name, blobs in net.params.iteritems(): print 'Name: {0}, Blobs: {1}'.format(name, len(blobs)) for i in range(len(blobs)): # Weights if i == 0: outname = name + "_w" # Bias elif i == 1: outname = name + "_b" else: pass print("%s : %s" % (outname, blobs[i].data.shape)) # Dump as binary blobs[i].data.tofile(outname + ".dat")