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引數及特徵抽取的詳細內容。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69901823/viewspace-2906113/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- caffe的python介面繪製loss和accuracy曲線示例Python
- (4)caffe總結之視覺層及引數視覺
- (6)caffe總結之其它常用層及引數
- 抽取任意層特徵---caffe使用MemoryDataLayer從記憶體中載入資料特徵記憶體
- curl常用引數詳解及示例
- Matlab 使用caffe示例Matlab
- caffe網路各層引數詳解
- 機器學習1-sklearn&字典特徵抽取機器學習特徵
- 在Windows下編譯Caffe與其Python介面Windows編譯Python
- MySql連線資料庫常用引數及程式碼示例MySql資料庫
- Python 中 key 引數的含義及用法Python
- Python中key引數的含義及用法Python
- Python的socket模組及示例Python
- Python的HTTP庫及示例PythonHTTP
- ORACLE sequence各引數及建立修改刪除使用詳解示例Oracle
- C#中的值引數,引用引數及輸出引數C#
- c#之帶有out輸出引數的方法定義及使用示例C#
- MySQL資料備份多種引數介紹及簡單示例MySql
- C++ 預設引數與引用傳遞:語法、用法及示例C++
- BigBiGAN的前世今生,走向成熟的特徵抽取器特徵
- 語音識別的特徵提取中的相關引數特徵
- 給一個介面傳遞引數,並接收返回的引數
- Python語法—函式及引數傳遞Python函式
- 【python介面自動化】- 正則用例引數化Python
- C語言結構體及函式傳遞陣列引數示例C語言結構體函式陣列
- maven的指令及常用引數Maven
- python引數Python
- Python多種介面請求方式示例Python
- 使用隱含引數testMappingSpeed排查GoldenGate抽取慢的步驟APPGo
- 2.6.1.1 初始化引數檔案示例
- Linux - find命令常用引數與示例Linux
- Python命令列引數定義及注意事項Python命令列
- 什麼是機器學習的特徵工程?【資料集特徵抽取(字典,文字TF-Idf)、特徵預處理(標準化,歸一化)、特徵降維(低方差,相關係數,PCA)】機器學習特徵工程PCA
- caffe之提取任意層特徵並進行視覺化特徵視覺化
- Python中的引數遮蔽Python
- 介面測試-引數校驗
- 介面測試 - 引數測試
- 智慧數字經營引領下的數字企業有什麼特徵?特徵