日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

caffe的python接口学习(8):caffemodel中的参数及特征的抽取

發布時間:2024/4/17 python 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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中的参数及特征的抽取的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。