caffe的python接口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   #提取某层数据(特征)

以上就是caffe的python接口caffemodel参数及特征抽取的详细内容,更多关于python caffemodel参数特征抽取的资料请关注我们其它相关文章!

(0)

相关推荐

  • caffe的python接口绘制loss和accuracy曲线

    目录 引言 anaconda库 python接口实现 引言 使用python接口来运行caffe程序,主要的原因是python非常容易可视化.所以不推荐大家在命令行下面运行python程序.如果非要在命令行下面运行,还不如直接用 c++算了. 推荐使用jupyter notebook,spyder等工具来运行python代码,这样才和它的可视化完美结合起来. anaconda库 因为我是用anaconda来安装一系列python第三方库的,所以我使用的是spyder,与matlab界面类似的一款

  • Caffe数据可视化环境python接口配置教程示例

    目录 引言 一.安装python和pip 二.安装pyhon接口依赖库 三.利用anaconda来配置python环境 四.编译python接口 五.安装jupyter 引言 caffe程序是由c++语言写的,本身是不带数据可视化功能的.只能借助其它的库或接口,如opencv, python或matlab.大部分人使用python接口来进行可视化,因为python出了个比较强大的东西:ipython notebook, 现在的最新版本改名叫jupyter notebook,它能将python代码

  • caffe的python接口生成solver文件详解学习

    目录 solver.prototxt的文件参数设置 生成solver文件 简便的方法 训练模型(training) solver.prototxt的文件参数设置 caffe在训练的时候,需要一些参数设置,我们一般将这些参数设置在一个叫solver.prototxt的文件里面,如下: base_lr: 0.001display: 782gamma: 0.1lr_policy: “step”max_iter: 78200momentum: 0.9snapshot: 7820snapshot_pref

  • python格式的Caffe图片数据均值计算学习

    目录 引言 一.二进制格式的均值计算 二.python格式的均值计算 引言 图片减去均值后,再进行训练和测试,会提高速度和精度.因此,一般在各种模型中都会有这个操作. 那么这个均值怎么来的呢,实际上就是计算所有训练样本的平均值,计算出来后,保存为一个均值文件,在以后的测试中,就可以直接使用这个均值来相减,而不需要对测试图片重新计算. 一.二进制格式的均值计算 caffe中使用的均值数据格式是binaryproto, 作者为我们提供了一个计算均值的文件compute_image_mean.cpp,

  • caffe的python接口之手写数字识别mnist实例

    目录 引言 一.数据准备 二.导入caffe库,并设定文件路径 二.生成配置文件 三.生成参数文件solver 四.开始训练模型 五.完成的python文件 引言 深度学习的第一个实例一般都是mnist,只要这个例子完全弄懂了,其它的就是举一反三的事了.由于篇幅原因,本文不具体介绍配置文件里面每个参数的具体函义,如果想弄明白的,请参看我以前的博文: 数据层及参数 视觉层及参数 solver配置文件及参数 一.数据准备 官网提供的mnist数据并不是图片,但我们以后做的实际项目可能是图片.因此有些

  • caffe的python接口生成deploy文件学习示例

    目录 如果要把训练好的模型拿来测试新的图片,那必须得要一个deploy.prototxt文件,这个文件实际上和test.prototxt文件差不多,只是头尾不相同而也.deploy文件没有第一层数据输入层,也没有最后的Accuracy层,但最后多了一个Softmax概率层. 这里我们采用代码的方式来自动生成该文件,以mnist为例. deploy.py # -*- coding: utf-8 -*- from caffe import layers as L,params as P,to_pro

  • caffe的python接口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_ite

  • python接口调用已训练好的caffe模型测试分类方法

    训练好了model后,可以通过python调用caffe的模型,然后进行模型测试的输出. 本次测试主要依靠的模型是在caffe模型里面自带训练好的结构参数:~/caffe/models/bvlc_reference_caffenet/bvlc_reference_caffenet.caffemodel,以及结构参数 :~/caffe/models/bvlc_reference_caffenet/deploy.prototxt相结合,用python接口进行调用. 训练的源代码以及相应的注释如下所示

  • python接口自动化(十六)--参数关联接口后传(详解)

    简介 大家对前边的自动化新建任务之后,接着对这个新建任务操作了解之后,希望带小伙伴进一步巩固胜利的果实,夯实基础.因此再在沙场实例演练一下博客园的相关接口.我们用自动化发随笔之后,要想接着对这篇随笔操作,不用说就需 要用参数关联了,发随笔之后会有一个随笔的 id,获取到这个 id,继续操作传这个随笔 id 就可以了(博客园的登录机制已经变了,不能用账号和密码登录了,这里用 cookie 登录) 大致流程步骤:web界面操作登录抓包查看cookie->代码模拟cookie登录->web界面操作新

  • python+pytest接口自动化参数关联

    目录 前言 一.什么是参数关联? 二.有哪些场景? 三.参数关联场景 四.脚本编写 1.在用例中按顺序调用 2. 使用Fixture函数 五. 总结 前言 今天呢,笔者想和大家来聊聊python+pytest接口自动化测试的参数关联,笔者这边就不多说废话了,咱们直接进入正题. 一.什么是参数关联? 参数关联,也叫接口关联,即接口之间存在参数的联系或依赖.在完成某一功能业务时,有时需要按顺序请求多个接口,此时在某些接口之间可能会存在关联关系.比如:B接口的某个或某些请求参数是通过调用A接口获取的,

  • python 接口_从协议到抽象基类详解

    抽象基类的常见用途:实现接口时作为超类使用.然后,说明抽象基类如何检查具体子类是否符合接口定义,以及如何使用注册机制声明一个类实现了某个接口,而不进行子类化操作.最后,说明如何让抽象基类自动"识别"任何符合接口的类--不进行子类化或注册. Python文化中的接口和协议 接口在动态类型语言中是怎么运作的呢?首先,基本的事实是,Python语言没有 interface 关键字,而且除了抽象基类,每个类都有接口:类实现或继承的公开属性(方法或数据属性),包括特殊方法,如__getitem_

随机推荐