caffe的python接口学习(8):caffemodel中的参数及特征的抽取
如果用公式 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' #训练好的 caffemodel net = 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].data b1=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 caffe import numpy as np root='/home/xxx/' #根目录 deploy=root + 'mnist/deploy.prototxt' #deploy文件 caffe_model=root + 'mnist/lenet_iter_9380.caffemodel' #训练好的 caffemodel net = 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 #提取参数w b1=net.params['Convolution1'][1].data #提取参数b
net.forward() #运行测试
[(k,v.data.shape) for k,v in net.blobs.items()] #查看各层数据规模
fea=net.blobs['InnerProduct1'].data #提取某层数据(特征)
转载于:https://www.cnblogs.com/denny402/p/5686257.html
caffe的python接口学习(8):caffemodel中的参数及特征的抽取相关推荐
- caffe的python接口学习(6):用训练好的模型(caffemodel)来分类新的图片
经过前面两篇博文的学习,我们已经训练好了一个caffemodel模型,并生成了一个deploy.prototxt文件,现在我们就利用这两个文件来对一个新的图片进行分类预测. 我们从mnist数据集的t ...
- caffe的python接口学习(2)生成solver文件
caffe在训练的时候,需要一些参数设置,我们一般将这些参数设置在一个叫solver.prototxt的文件里面 有一些参数需要计算的,也不是乱设置. 假设我们有50000个训练样本,batch_si ...
- 利用caffe的python接口实现DeepImageSynthesis实例
在之前实现faster rcnn的博客中,先是配置了caffe的python接口,但是在验证的时候用DeepTexture的实例没有成功.改用pycharm而不是jupyter notebook再试一 ...
- Windows10上使用Caffe的Python接口进行图像分类例程
本文将会介绍Caffe的Python接口的使用方法.编辑Python可以使用很多种方法,我们采用的是IPython交互式编辑环境. 1 Python的安装 如果你的Windows电脑还没有安装Pyth ...
- Caffe的python接口安装
点击此处返回总目录 这一节我们需要编译pycaffe.pycaffe是caffe的python接口.后面我们回用到python进行编程. 一.准备工作 准备工作1:Caffe release版本的编译 ...
- caffe python接口_ubuntu配置caffe的python接口pycaffe
参考网站: ubuntu配置caffe的python接口pycaffe 依赖 前提caffe已经正确编译.见Ubuntu配置caffe库包sudo apt-get install python-pip ...
- Python深度学习一书中: 8.4代码VAE在tensorflow2.0错误‘lambda_1/random_normal/shape‘的解决方案
Python深度学习一书中: 8.4代码VAE在tensorflow2.0下会有Duplicate node name in graph: 'lambda_1/random_normal/shape' ...
- ubuntu16.04 安装caffe以及python接口
http://blog.csdn.net/qq_25073253/article/details/72571714 http://blog.csdn.net/greed7480/article/det ...
- 使用caffe的python接口预测多张图片
一.前言 根据前面博文 使用lenet模型训练及预测自己的图片数据 可得到训练得的caffemodel及其他相关的文件,回顾下My_FIle文件夹如下,predictPic文件夹中保存的是名为&quo ...
最新文章
- 【BZOJ】3173: [Tjoi2013]最长上升子序列(树状数组)
- squid代理(传统代理)
- Centos YUM国内163源
- 机器学习代码实战——拆分训练集与测试集(train_test_split)
- udp helper 的使用
- Vue进阶(幺捌零):Vue优质开源项目汇总(持续更新中...)
- python学习笔记(2)—— 控制流
- 微信小程序android和IOS拨打电话区别
- SPOJ ACPC13——Increasing Shortest Path
- 红楼解梦五--饥饿疗法
- NFS搭建错误处理:exportfs:No options for /home/source/*(rw,sync,no_root_squash):suggest(sync) to avoid warn
- ASCII Binary
- jmeter 5.5+influxdb 2.0+grafana v9.3.2 - 压测看板setup
- linux下通过wifi连接网络
- 如何在USGS下载Landsat 8-9影像(2022年版)
- 史上最全 前端开发面试问题及答案整理 http://segmentfault.com/blog/trigkit4/1190000002562454
- 叶问纵横四海战法公式
- 从何着手OpenHarmony?从这里开始认识嵌入式开源鸿蒙操作系统
- 使用Web Scraper插件实现简单爬虫
- Linux网络编程之套接字基础