如果用公式  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中的参数及特征的抽取相关推荐

  1. caffe的python接口学习(6):用训练好的模型(caffemodel)来分类新的图片

    经过前面两篇博文的学习,我们已经训练好了一个caffemodel模型,并生成了一个deploy.prototxt文件,现在我们就利用这两个文件来对一个新的图片进行分类预测. 我们从mnist数据集的t ...

  2. caffe的python接口学习(2)生成solver文件

    caffe在训练的时候,需要一些参数设置,我们一般将这些参数设置在一个叫solver.prototxt的文件里面 有一些参数需要计算的,也不是乱设置. 假设我们有50000个训练样本,batch_si ...

  3. 利用caffe的python接口实现DeepImageSynthesis实例

    在之前实现faster rcnn的博客中,先是配置了caffe的python接口,但是在验证的时候用DeepTexture的实例没有成功.改用pycharm而不是jupyter notebook再试一 ...

  4. Windows10上使用Caffe的Python接口进行图像分类例程

    本文将会介绍Caffe的Python接口的使用方法.编辑Python可以使用很多种方法,我们采用的是IPython交互式编辑环境. 1 Python的安装 如果你的Windows电脑还没有安装Pyth ...

  5. Caffe的python接口安装

    点击此处返回总目录 这一节我们需要编译pycaffe.pycaffe是caffe的python接口.后面我们回用到python进行编程. 一.准备工作 准备工作1:Caffe release版本的编译 ...

  6. caffe python接口_ubuntu配置caffe的python接口pycaffe

    参考网站: ubuntu配置caffe的python接口pycaffe 依赖 前提caffe已经正确编译.见Ubuntu配置caffe库包sudo apt-get install python-pip ...

  7. 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' ...

  8. ubuntu16.04 安装caffe以及python接口

    http://blog.csdn.net/qq_25073253/article/details/72571714 http://blog.csdn.net/greed7480/article/det ...

  9. 使用caffe的python接口预测多张图片

    一.前言 根据前面博文 使用lenet模型训练及预测自己的图片数据 可得到训练得的caffemodel及其他相关的文件,回顾下My_FIle文件夹如下,predictPic文件夹中保存的是名为&quo ...

最新文章

  1. 【BZOJ】3173: [Tjoi2013]最长上升子序列(树状数组)
  2. squid代理(传统代理)
  3. Centos YUM国内163源
  4. 机器学习代码实战——拆分训练集与测试集(train_test_split)
  5. udp helper 的使用
  6. Vue进阶(幺捌零):Vue优质开源项目汇总(持续更新中...)
  7. python学习笔记(2)—— 控制流
  8. 微信小程序android和IOS拨打电话区别
  9. SPOJ ACPC13——Increasing Shortest Path
  10. 红楼解梦五--饥饿疗法
  11. NFS搭建错误处理:exportfs:No options for /home/source/*(rw,sync,no_root_squash):suggest(sync) to avoid warn
  12. ASCII Binary
  13. jmeter 5.5+influxdb 2.0+grafana v9.3.2 - 压测看板setup
  14. linux下通过wifi连接网络
  15. 如何在USGS下载Landsat 8-9影像(2022年版)
  16. 史上最全 前端开发面试问题及答案整理 http://segmentfault.com/blog/trigkit4/1190000002562454
  17. 叶问纵横四海战法公式
  18. 从何着手OpenHarmony?从这里开始认识嵌入式开源鸿蒙操作系统
  19. 使用Web Scraper插件实现简单爬虫
  20. Linux网络编程之套接字基础

热门文章

  1. Caffe源码解析—核函数
  2. 关于go语言中的JWT(JSON WEB TONKE)ECHO
  3. VC INI文件读写 和 GetProfileString,WriteProfileString函数的使用
  4. std::mutex
  5. 分布式事务理论-二阶段提交(Two-phase Commit)
  6. 关于map的下标操作的2个例子
  7. xhtml中的五个块元素
  8. c 语言现代方法13章习题6
  9. 内联函数的定义可能不止一次
  10. 8086CPU常见汇编指令、debug命令