Caffe学习系列(16):caffemodel可视化
通过前面的学习,我们已经能够正常训练各种数据了。设置好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 来进行可视化。
在此顺便问一下各位大牛:如何在cnblogs中,发表jupyter notebook生成的文章?
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 = 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()]
[('conv1', (32, 3, 5, 5)),('conv2', (32, 32, 5, 5)),('conv3', (64, 32, 5, 5)),('ip1', (10, 1024))]
#编写一个函数,用于显示各层的参数 def show_feature(data, padsize=1, padval=0):data -= data.min()data /= data.max()# force the number of filters to be squaren = 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 imagedata = 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)
Caffe学习系列(16):caffemodel可视化相关推荐
- Caffe学习系列(16):各层权值参数可视化
原文有更新: Caffe学习系列(16):各层权值参数可视化 - denny402 - 博客园 http://www.cnblogs.com/denny402/p/5103425.html 通过前面的 ...
- caffe学习日记--lesson7:caffemodel可视化的两种方法
在Caffe中,目前有两种可视化prototxt格式网络结构的方法: 使用Netscope在线可视化 使用Caffe提供的draw_net.py 本文将就这两种方法加以介绍 Netscope:支持Ca ...
- Caffe 学习系列
学习列表: Google protocol buffer在windows下的编译 caffe windows 学习第一步:编译和安装(vs2012+win 64) caffe windows学习:第一 ...
- Caffe学习系列(17):模型各层特征和过滤器可视化
转载自: Caffe学习系列(17):模型各层特征和过滤器可视化 - denny402 - 博客园 http://www.cnblogs.com/denny402/p/5105911.html cif ...
- Caffe学习系列(13):数据可视化环境(python接口)配置
原文有更新: Caffe学习系列(13):数据可视化环境(python接口)配置 - denny402 - 博客园 http://www.cnblogs.com/denny402/p/5088399. ...
- Caffe学习系列(23):如何将别人训练好的model用到自己的数据上
caffe团队用imagenet图片进行训练,迭代30多万次,训练出来一个model.这个model将图片分为1000类,应该是目前为止最好的图片分类model了. 假设我现在有一些自己的图片想进行分 ...
- Caffe学习系列(22):caffe图形化操作工具digits运行实例
上接:Caffe学习系列(21):caffe图形化操作工具digits的安装与运行 经过前面的操作,我们就把数据准备好了. 一.训练一个model 右击右边Models模块的" Images ...
- Caffe学习系列(19): 绘制loss和accuracy曲线
转载自: Caffe学习系列(19): 绘制loss和accuracy曲线 - denny402 - 博客园 http://www.cnblogs.com/denny402/p/5110204.htm ...
- Caffe学习系列(21):caffe图形化操作工具digits的安装与运行
经过前面一系列的学习,我们基本上学会了如何在linux下运行caffe程序,也学会了如何用python接口进行数据及参数的可视化. 如果还没有学会的,请自行细细阅读: caffe学习系列:http:/ ...
- Caffe学习系列(十):腾讯ncnn框架
Caffe学习系列(十):腾讯ncnn框架 <手把手AI项目>七.MobileNetSSD通过Ncnn前向推理框架在PC端的使用(目标检测 objection detection) 1.n ...
最新文章
- C# mongodb 类库
- 网络安全体系 应用学习手册 下载
- 区块链经济时代得“先机”者得天下!
- day36 10-Hibernate中的事务:解决丢失更新
- C++中的Lambda表达式详解
- SpringBoot 2.x 整合Mybatis二:PageHelper分页
- java 字符串匹配_多模字符串匹配算法原理及Java实现代码
- ASP.NET中自动生成XML文件并通过XSLT显示在网页中的方法
- 创新创业大讲堂第一讲
- 手机投屏到电视的5种方法 看完才知道原来这么简单!
- RIFT Multi-Modal Image Matching Based on Radiation-Variation Insensitive Feature Transform
- 计算机术语root,root是什么意思
- 试题 基础练习 Fibonacci数列
- Paul叔纯正美式发音②~发音技巧(二)
- roc曲线spss怎么做_SPSS单因素ROC曲线及多因素联合诊断ROC曲线绘制(原创手把手) - 医学统计和生物统计讨论版 -丁香园论坛...
- 快排为什么一定要从右边开始?
- 力扣每日一题2021-12-24中等题:吃苹果的最大数目
- oracle 创建emp表,dept表
- 一花独放不是春 梆梆安全呼吁构建物联网安全共同体
- Above the MedianDueling GPSs