原文地址:https://www.cnblogs.com/denny402/p/5103425.html

通过前面的学习,我们已经能够正常训练各种数据了。设置好solver.prototxt后,我们可以把训练好的模型保存起来,如lenet_iter_10000.caffemodel。 训练多少次就自动保存一下,这个是通过snapshot进行设置的,保存文件的路径及文件名前缀是由snapshot_prefix来设定的。这个文件里面存放的就是各层的参数,即net.params,里面没有数据(net.blobs)。顺带还生成了一个相应的solverstate文件,这个和caffemodel差不多,但它多了一些数据,如模型名称、当前迭代次数等。两者的功能不一样,训练完后保存起来的caffemodel,是在测试阶段用来分类的,而solverstate是用来恢复训练的,防止意外终止而保存的快照(有点像断点续传的感觉)。

既然我们知道了caffemodel里面保存的就是模型各层的参数,因此我们可以把这些参数提取出来,进行可视化,看一看究竟长什么样。

我们先训练cifar10数据(mnist也可以),迭代10000次,然后将训练好的 model保存起来,名称为my_iter_10000.caffemodel,然后使用jupyter notebook 来进行可视化。

首先,导入必要的库

  1. import numpy as np
    import matplotlib.pyplot as plt
    import os,sys,caffe%matplotlib inline
    caffe_root='/home/lee/caffe/'
    os.chdir(caffe_root)
    sys.path.insert(0,caffe_root+'python')plt.rcParams['figure.figsize'] = (8, 8)
    plt.rcParams['image.interpolation'] = 'nearest'
    plt.rcParams['image.cmap'] = 'gray'
    

      

设置网络模型,并显示该模型中各层名称和参数的规模(注意此处是net.params, 而不是net.blobs)


net = caffe.Net(caffe_root + 'examples/cifar10/cifar10_full.prototxt',
caffe_root + 'examples/cifar10/my_iter_10000.caffemodel',
caffe.TEST)[(k, v[0].data.shape) for k, v in net.params.items()]

  

Out:

[('conv1', (32, 3, 5, 5)),('conv2', (32, 32, 5, 5)),('conv3', (64, 32, 5, 5)),('ip1', (10, 1024))]

cifar10训练的模型配置在文件cifar10_full.prototxt里面,共有三个卷积层和一个全连接层,参数规模如上所示

#编写一个函数,用于显示各层的参数
def show_feature(data, padsize=1, padval=0):
data -= data.min()
data /= data.max()# force the number of filters to be square
n = int(np.ceil(np.sqrt(data.shape[0])))
padding = ((0, n ** 2 - data.shape[0]), (0, padsize), (0, padsize)) + ((0, 0),) * (data.ndim - 3)
data = np.pad(data, padding, mode='constant', constant_values=(padval, padval))# tile the filters into an image
data = data.reshape((n, n) + data.shape[1:]).transpose((0, 2, 1, 3) + tuple(range(4, data.ndim + 1)))
data = data.reshape((n * data.shape[1], n * data.shape[3]) + data.shape[4:])
plt.imshow(data)
plt.axis('off')# 第一个卷积层,参数规模为(32,3,5,5),即32个5*5的3通道filter
weight = net.params["conv1"][0].data
print weight.shape
show_feature(weight.transpose(0, 2, 3, 1))

  

 

(32, 3, 5, 5) 参数有两种类型:权值参数和偏置项。分别用params["conv1"][0] 和params["conv1"][1] 表示 。 我们只显示权值参数,因此用params["conv1"][0]

# 第二个卷积层的权值参数,共有32*32个filter,每个filter大小为5*5
weight = net.params["conv2"][0].data
print weight.shape
show_feature(weight.reshape(32**2, 5, 5))

(32, 32, 5, 5)

# 第三个卷积层的权值,共有64*32个filter,每个filter大小为5*5,取其前1024个进行可视化
weight = net.params["conv3"][0].data
print weight.shape
show_feature(weight.reshape(64*32, 5, 5)[:1024])

(64, 32, 5, 5)

转载于:https://www.cnblogs.com/byteHuang/p/10830268.html

caffemodel权值可视化(转)相关推荐

  1. 深度学习 vs. 大数据:神经网络权值的版权属于谁?

     深度学习 vs. 大数据:神经网络权值的版权属于谁? width="22" height="16" src="http://hits.sinaj ...

  2. 权值衰减weight decay的理解

    1. 介绍 权值衰减weight decay即L2正则化,目的是通过在Loss函数后加一个正则化项,通过使权重减小的方式,一定减少模型过拟合的问题. L1正则化:即对权重矩阵的每个元素绝对值求和, λ ...

  3. 高效深度学习软硬件设计——神经网络压缩、 Pruning模型剪枝、权值共享、低秩近似

    目录 问题引出 高效推断的算法 Pruning模型剪枝 步骤 剪去参数--形状不规则 剪去神经元--形状仍然规则 Why Pruning Pruning Changes Weight Distribu ...

  4. The Minimum Cycle Mean in a Digraph 《有向图中的最小平均权值回路》 Karp

    文件链接 Karp在1977年的论文,讲述了一种\(O(nm)\)的算法,用来求有向强连通图中最小平均权值回路(具体问题请参照这里) 本人翻译(有删改): 首先任取一个节点 \(s\) ,定义 \(F ...

  5. 【bzoj2770】YY的Treap 权值线段树

    题目描述 志向远大的YY小朋友在学完快速排序之后决定学习平衡树,左思右想再加上SY的教唆,YY决定学习Treap.友爱教教父SY如砍瓜切菜般教会了YY小朋友Treap(一种平衡树,通过对每个节点随机分 ...

  6. poj3686(最小权值完美匹配)

    开始理解的有点简单了,也是看了其他的博客之后发现问题的: 题意:因为每一个物件都是受前一个物件的时间限制,所以假设某台机器加工了k个订单,那么用时为t1 + (t1 + t2) + (t1 + t2 ...

  7. HDU6346(最小权值完美匹配)

    题意:满足 xi+yj≤ai,j(1≤i,j≤n) 的约束下最大化∑ni=1xi+∑ni=1yi, 思路:采用最大权值完美匹配算法:但是现在这里是求最小权值完美匹配问题,所以只需要将权值取反最后在取反 ...

  8. 牛客练习赛84:牛客推荐系统开发之标签重复度(点分治+动态开点权值线段树)

    题意: 给你一棵树,问树上所有两点路径上的(最大值最小值乘积)之和. 题解: 很明显的一个点分治问题,然后就是个二维偏序问题了(虽然我也不知道啥是二维偏序). 点分治不难,重点是点分治内cal函数如何 ...

  9. 树套树 ----- P1975 [国家集训队]排队(树状数组套权值线段树求动态逆序对)

    解题思路: 首先我们知道交换两个数a[l]和a[r]a[l]和a[r]a[l]和a[r]影响到的区间是[l+1,r−1][l+1,r-1][l+1,r−1] 对于a[l]a[l]a[l],我们要减去[ ...

最新文章

  1. 微型计算机的内存主要包括rom,信息安全技术题库:路由器硬件组件主要包括( )、闪存、ROM、RAM。 - 作业在线问答...
  2. Visual Studio 2013运行时卡顿 CPU占用超高的解决方法
  3. 清理垃圾代码bat_来买个小内存u盘么咯?盘内带电脑垃圾清理.bat那种丨heibai.org...
  4. SpringMvc渲染视图
  5. linux 文件-s,Linux下访问文件的基本模式
  6. 为什么预估执行计划与真实执行计划会有差异?
  7. 健康窈窕美女第一课 减肥vs早餐四个关键问题。
  8. 小美赛:模拟机舱病毒传播
  9. 一款 redis客户端工具RedisDesktopManager的安装和使用
  10. 微软原版win10系统启动盘的使用
  11. php 12306模拟登录,12306 selenium 模拟登录
  12. 艺术创作六步法则、浅谈色彩、如何理解漫画
  13. Alios-Things之wifi模块二次开发-(1)搭建Alios-Things开发环境(基于ubuntu 16.0.4)
  14. iPhone模拟器如何截图呢?
  15. 连上wifi浏览器不能上网微信却可以登陆
  16. 如何用几百美元撬动数亿美元的大生意?德比软件做到了
  17. 人工智能原理(书籍推荐)
  18. Python还在原地踏步?今天女友程序员教你函数的定义与使用
  19. 【C语言】五彩斑斓的颜色
  20. 3_1 操作系统定义、分类及功能【包含linux操作系统基础知识】

热门文章

  1. java加载js_Java加载js
  2. tolua打包Android后路径出错,unity+tolua 64位android崩溃排查过程记录
  3. vue 使用了浏览器的刷新之后报错_vue调试工具vue-devtools的安装
  4. java dochain,Java filter中的chain.doFilter详解
  5. KNN算法网格搜索最优参数
  6. jieba分词单例模式及linux权限不够情况下tmp_dir自定义
  7. JS(ES6)、Vue.js、node.js
  8. 3-idiots HDU - 4609 FFT模板
  9. 我的Java设计模式-单例模式
  10. Semaphore实现原理分析