阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

caffe的python接口caffemodel参数及特征抽取示例

90次阅读
没有评论

共计 1801 个字符,预计需要花费 5 分钟才能阅读完成。

导读 这篇文章主要介绍了 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 参数及特征抽取的详细内容。

阿里云 2 核 2G 服务器 3M 带宽 61 元 1 年,有高配

腾讯云新客低至 82 元 / 年,老客户 99 元 / 年

代金券:在阿里云专用满减优惠券

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2024-07-25发表,共计1801字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中