使用pycaffe读取caffemodel参数(保存到txt文件)

 
  
  1. #!/usr/bin/env python  
  2.   
  3. # 引入“咖啡”  
  4. import caffe  
  5.   
  6. import numpy as np  
  7.   
  8. # 使输出的参数完全显示  
  9. # 若没有这一句,因为参数太多,中间会以省略号“……”的形式代替  
  10. np.set_printoptions(threshold='nan')  
  11.   
  12. # deploy文件  
  13. MODEL_FILE = 'caffe_deploy.prototxt'  
  14. # 预先训练好的caffe模型  
  15. PRETRAIN_FILE = 'caffe_iter_10000.caffemodel'  
  16.   
  17. # 保存参数的文件  
  18. params_txt = 'params.txt'  
  19. pf = open(params_txt, 'w')  
  20.   
  21. # 让caffe以测试模式读取网络参数  
  22. net = caffe.Net(MODEL_FILE, PRETRAIN_FILE, caffe.TEST)  
  23.   
  24. # 遍历每一层  
  25. for param_name in net.params.keys():  
  26.     # 权重参数  
  27.     weight = net.params[param_name][0].data  
  28.     # 偏置参数  
  29.     bias = net.params[param_name][1].data  
  30.   
  31.     # 该层在prototxt文件中对应“top”的名称  
  32.     pf.write(param_name)  
  33.     pf.write('\n')  
  34.   
  35.     # 写权重参数  
  36.     pf.write('\n' + param_name + '_weight:\n\n')  
  37.     # 权重参数是多维数组,为了方便输出,转为单列数组  
  38.     weight.shape = (-1, 1)  
  39.   
  40.     for w in weight:  
  41.         pf.write('%ff, ' % w)  
  42.   
  43.     # 写偏置参数  
  44.     pf.write('\n\n' + param_name + '_bias:\n\n')  
  45.     # 偏置参数是多维数组,为了方便输出,转为单列数组  
  46.     bias.shape = (-1, 1)  
  47.     for b in bias:  
  48.         pf.write('%ff, ' % b)  
  49.   
  50.     pf.write('\n\n')  
  51.   
  52. pf.close 

你可能感兴趣的:(深度学习-caffe网络模型)