caffe的python接口学习(8):caffemodel中的参数及特征的抽取
来源:互联网 发布:2010装饰定额预算软件 编辑:程序博客网 时间:2024/05/16 05:11
转载原文地址:http://www.cnblogs.com/denny402/p/5686257.html
如果用公式 y=f(wx+b)
来表示整个运算过程的话,那么w和b就是我们需要训练的东西,w称为权值,在cnn中也可以叫做卷积核(filter),b是偏置项。f是激活函数,有sigmoid、relu等。x就是输入的数据。
数据训练完成后,保存的caffemodel里面,实际上就是各层的w和b值。
我们运行代码:
deploy=root + 'mnist/deploy.prototxt' #deploy文件caffe_model=root + 'mnist/lenet_iter_9380.caffemodel' #训练好的 caffemodelnet = caffe.Net(net_file,caffe_model,caffe.TEST) #加载model和network
就把所有的参数和数据都加载到一个net变量里面了,但是net是一个很复杂的object, 想直接显示出来看是不行的。其中:
net.params: 保存各层的参数值(w和b)
net.blobs: 保存各层的数据值
可用命令:
[(k,v[0].data) for k,v in net.params.items()]
查看各层的参数值,其中k表示层的名称,v[0].data就是各层的W值,而v[1].data是各层的b值。注意:并不是所有的层都有参数,只有卷积层和全连接层才有。
也可以不查看具体值,只想看一下shape,可用命令
[(k,v[0].data.shape) for k,v in net.params.items()]
假设我们知道其中第一个卷积层的名字叫'Convolution1', 则我们可以提取这个层的参数:
w1=net.params['Convolution1'][0].datab1=net.params['Convolution1'][1].data
输入这些代码,实际查看一下,对你理解network非常有帮助。
同理,除了查看参数,我们还可以查看数据,但是要注意的是,net里面刚开始是没有数据的,需要运行:
net.forward()
之后才会有数据。我们可以用代码:
[(k,v.data.shape) for k,v in net.blobs.items()]
或
[(k,v.data) for k,v in net.blobs.items()]
来查看各层的数据。注意和上面查看参数的区别,一个是net.params, 一个是net.blobs.
实际上数据刚输入的时候,我们叫图片数据,卷积之后我们就叫特征了。
如果要抽取第一个全连接层的特征,则可用命令:
fea=net.blobs['InnerProduct1'].data
只要知道某个层的名称,就可以抽取这个层的特征。
推荐大家在spyder中,运行一下上面的所有代码,深入理解模型各层。
最后,总结一个代码:
import caffeimport numpy as nproot='/home/xxx/' #根目录deploy=root + 'mnist/deploy.prototxt' #deploy文件caffe_model=root + 'mnist/lenet_iter_9380.caffemodel' #训练好的 caffemodelnet = caffe.Net(deploy,caffe_model,caffe.TEST) #加载model和network
[(k,v[0].data.shape) for k,v in net.params.items()] #查看各层参数规模
w1=net.params['Convolution1'][0].data #提取参数wb1=net.params['Convolution1'][1].data #提取参数b
net.forward() #运行测试
[(k,v.data.shape) for k,v in net.blobs.items()] #查看各层数据规模
fea=net.blobs['InnerProduct1'].data #提取某层数据(特征)
- caffe的python接口学习(8):caffemodel中的参数及特征的抽取
- caffe的python接口学习(8):caffemodel中的参数及特征的抽取
- caffe的python接口学习(8):caffemodel中的参数及特征的抽取
- caffe的python接口学习(8):caffemodel中的参数及特征的抽取
- caffe的python接口学习(8):caffemodel中的参数及特征的抽取
- caffe的python接口学习(8):caffemodel中的参数及特征的抽取
- caffe的python接口学习:caffemodel中的参数及特征的抽取(转载)
- caffemodel中的参数及特征的抽取
- caffemodel中的参数及特征的抽取
- caffe python接口:参数及特征提取
- caffe的python接口学习(6):用训练好的模型(caffemodel)来分类新的图片
- caffe的python接口学习(6):用训练好的模型(caffemodel)来分类新的图片
- caffe的python接口学习(6):用训练好的模型(caffemodel)来分类新的图片
- caffe的python接口学习:用训练好的模型(caffemodel或者h5)来分类新的图片
- caffe -- Python特征抽取
- caffe的python接口学习(11):特征的批量提取
- caffe 练习4 ----利用python批量抽取caffe计算得到的特征------by 香蕉麦乐迪
- 利用caffe的pycaffe接口将caffemodel中的字段保存为prototxt
- AppCompatActivity、ActionBarActivity、FragmentActivity和Activity的区别
- Python 安装setuptools方
- 详细全面的 SpringBoot 文件上传
- socket 流程(服务器,客户端)
- 文件的拷贝、删除、保存以及关键字替换
- caffe的python接口学习(8):caffemodel中的参数及特征的抽取
- Android仿ios底部弹出框效果
- 设计模式之桥接模式(Bridge)
- 页面动态引用JS或CSS文件
- 工具优化(3)-- MarkDown基础语法与快捷键
- 国内可用的maven仓库地址
- Android图像与动画<1>
- c++石头-剪刀-布游戏c++程序设计原理与实践第4章习题
- Android Studio的下载与开发环境的搭建