caffe的python接口caffemodel參數(shù)及特征抽取示例
正文
如果用公式 y=f(wx+b)
來(lái)表示整個(gè)運(yùn)算過(guò)程的話,那么w和b就是我們需要訓(xùn)練的東西,w稱為權(quán)值,在cnn中也可以叫做卷積核(filter),b是偏置項(xiàng)。f是激活函數(shù),有sigmoid、relu等。x就是輸入的數(shù)據(jù)。
數(shù)據(jù)訓(xùn)練完成后,保存的caffemodel里面,實(shí)際上就是各層的w和b值。
我們運(yùn)行代碼:
deploy=root + 'mnist/deploy.prototxt' #deploy文件 caffe_model=root + 'mnist/lenet_iter_9380.caffemodel' #訓(xùn)練好的 caffemodel net = caffe.Net(net_file,caffe_model,caffe.TEST) #加載model和network
就把所有的參數(shù)和數(shù)據(jù)都加載到一個(gè)net變量里面了,但是net是一個(gè)很復(fù)雜的object, 想直接顯示出來(lái)看是不行的。其中:
net.params: 保存各層的參數(shù)值(w和b)
net.blobs: 保存各層的數(shù)據(jù)值
可用命令:
[(k,v[0].data) for k,v in net.params.items()]
查看各層的參數(shù)值,其中k表示層的名稱,v[0].data就是各層的W值,而v[1].data是各層的b值。注意:并不是所有的層都有參數(shù),只有卷積層和全連接層才有。
也可以不查看具體值,只想看一下shape,可用命令
[(k,v[0].data.shape) for k,v in net.params.items()]
假設(shè)我們知道其中第一個(gè)卷積層的名字叫'Convolution1', 則我們可以提取這個(gè)層的參數(shù):
w1=net.params['Convolution1'][0].data b1=net.params['Convolution1'][1].data
輸入這些代碼,實(shí)際查看一下,對(duì)你理解network非常有幫助。
同理,除了查看參數(shù),我們還可以查看數(shù)據(jù),但是要注意的是,net里面剛開始是沒有數(shù)據(jù)的,需要運(yùn)行:
net.forward()
之后才會(huì)有數(shù)據(jù)。我們可以用代碼:
[(k,v.data.shape) for k,v in net.blobs.items()]
或
[(k,v.data) for k,v in net.blobs.items()]
來(lái)查看各層的數(shù)據(jù)。注意和上面查看參數(shù)的區(qū)別,一個(gè)是net.params, 一個(gè)是net.blobs.
實(shí)際上數(shù)據(jù)剛輸入的時(shí)候,我們叫圖片數(shù)據(jù),卷積之后我們就叫特征了。
如果要抽取第一個(gè)全連接層的特征,則可用命令:
fea=net.blobs['InnerProduct1'].data
只要知道某個(gè)層的名稱,就可以抽取這個(gè)層的特征。
推薦大家在spyder中,運(yùn)行一下上面的所有代碼,深入理解模型各層。
最后,總結(jié)一個(gè)代碼:
import caffe import numpy as np root='/home/xxx/' #根目錄 deploy=root + 'mnist/deploy.prototxt' #deploy文件 caffe_model=root + 'mnist/lenet_iter_9380.caffemodel' #訓(xùn)練好的 caffemodel net = caffe.Net(deploy,caffe_model,caffe.TEST) #加載model和network [(k,v[0].data.shape) for k,v in net.params.items()] #查看各層參數(shù)規(guī)模 w1=net.params['Convolution1'][0].data #提取參數(shù)w b1=net.params['Convolution1'][1].data #提取參數(shù)b net.forward() #運(yùn)行測(cè)試 [(k,v.data.shape) for k,v in net.blobs.items()] #查看各層數(shù)據(jù)規(guī)模 fea=net.blobs['InnerProduct1'].data #提取某層數(shù)據(jù)(特征)
以上就是caffe的python接口caffemodel參數(shù)及特征抽取的詳細(xì)內(nèi)容,更多關(guān)于python caffemodel參數(shù)特征抽取的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
- Python分析特征數(shù)據(jù)類別與預(yù)處理方法速學(xué)
- python?OpenCV實(shí)現(xiàn)圖像特征匹配示例詳解
- python深度學(xué)習(xí)tensorflow1.0參數(shù)和特征提取
- Python計(jì)算機(jī)視覺SIFT尺度不變的圖像特征變換
- python神經(jīng)網(wǎng)絡(luò)特征金字塔FPN原理
- python機(jī)器學(xué)習(xí)基礎(chǔ)特征工程算法詳解
- Python機(jī)器學(xué)習(xí)利用隨機(jī)森林對(duì)特征重要性計(jì)算評(píng)估
- Python機(jī)器學(xué)習(xí)特征重要性分析的8個(gè)常用方法實(shí)例探究
相關(guān)文章
詳解Django模板層過(guò)濾器和繼承的問(wèn)題
今天抽空給大家介紹Django模板層過(guò)濾器和繼承的問(wèn)題,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2021-07-07Python結(jié)合Selenium簡(jiǎn)單實(shí)現(xiàn)Web自動(dòng)化測(cè)試
這篇文章是入門級(jí)別的應(yīng)用Python + Selenium進(jìn)行自動(dòng)化測(cè)試,包括環(huán)境搭建及簡(jiǎn)單的實(shí)例,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-09-09解決django 向mysql中寫入中文字符出錯(cuò)的問(wèn)題
這篇文章主要介紹了解決django 向mysql中寫入中文字符出錯(cuò)的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-05-05python?pandas數(shù)據(jù)處理之刪除特定行與列
Pandas是數(shù)據(jù)科學(xué)中的利器,你可能想到的數(shù)據(jù)處理騷操作,貌似用Pandas都能夠?qū)崿F(xiàn),下面這篇文章主要給大家介紹了關(guān)于python?pandas數(shù)據(jù)處理之刪除特定行與列的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-08-08Python實(shí)現(xiàn)csv文件(點(diǎn)表和線表)轉(zhuǎn)換為shapefile文件的方法
這篇文章主要介紹了Python實(shí)現(xiàn)csv文件(點(diǎn)表和線表)轉(zhuǎn)換為shapefile文件的方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-10-10python實(shí)現(xiàn)鍵盤控制鼠標(biāo)移動(dòng)
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)鍵盤控制鼠標(biāo)移動(dòng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-10-10Python實(shí)現(xiàn)桶排序與快速排序算法結(jié)合應(yīng)用示例
這篇文章主要介紹了Python實(shí)現(xiàn)桶排序與快速排序算法結(jié)合應(yīng)用,結(jié)合實(shí)例形式分析了Python快速排序及桶排序結(jié)合應(yīng)用的相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2017-11-11