caffe 檢視caffemodel中的引數與資料

2021-08-19 20:38:09 字數 1577 閱讀 8938

在用caffe訓練完乙個模型之後,我們想更加直觀的檢視這個模型該怎麼做呢?

caffe框架訓練出來的caffemodel是乙個類似於黑盒的東西,我們無法直接看到它的本質,需要借助caffe所定義的介面來協助我們。詳細的文件在caffe官網上都有介紹:

如果我們用f=wx+b來表示運算的過程,

那w和b就是我們需要訓練的引數,w稱為權值,在cnn中也可以叫做卷積核(filter),b為偏置項。

資料訓練完之後,儲存在caffemodel裡面的,實際上就是各層的w和b

此處附圖一張,方便直觀理解

一.檢視caffemodel中的引數

請在spyder中執行以下**

import sys

caffe_root = '.../'

#填寫詳細的caffe路徑

sys.path.insert(0, caffe_root + 'python')

import caffe

deploy='.../deploy.prototxt'

#deploy檔案路徑

caffe_model='.../***.caffemodel'

#caffemodel的路徑

net = caffe.net(deploy,caffe_model,caffe.test) #載入network和model

通過以上的**就可以將引數和資料載入到乙個net變數中了,但是這個變數非常複雜,無法直接顯示出來,需要借助各種命令來檢視。

net.blobs:儲存各層的資料值

net.params:儲存各層的引數(w和b)

[(k,v[0].data) for k,v in net.params.items()]
其中k表示層的名稱,我們可以在網路的定義中檢視各層的名稱,

v[0].data是各層中w的值,

v[1].data是各層中b的值。

注意:並不是所有的層都有引數,只有卷積層和全連線層才有

如果想檢視某一層的引數,可使用以下命令

w1=net.params['***'][0].data   

b1=net.params['***'][1].data

***表示為想要檢視的層的名稱

二.檢視caffemodel中的資料

net中剛開始是沒有資料的,需要執行以下命令才會有資料

net.forward()
然後使用**檢視各層的資料

[(k,v.data) for k,v in net.blobs

.items()]

卷積過後的資料為特徵,可以用以下命令提取特徵

fea=net.blobs['***'].data

其中***為層的名稱

檢視caffe模型的引數

1.訓練模型的引數 solver caffe.sgdsolver str solver path for name,blob in solver.net.blobs,items 網路中的資料,blobs是乙個字典 print name str blob.data.shape blob是blob的類物...

Caffe學習筆記 Caffe模型

乙個完整的深度學習系統最核心的兩個方面是資料和模型。深度學習模型通常由三部分引數組成 可學習引數 learnable parameter 又稱可訓練引數 神經網路權係數 權重,其數值由模型初始化引數 誤差反向傳播過程控制,一般不可人工干預。結構引數 archetecture parameter 包括...

caffe安裝系列 安裝caffe

部落格新址 作業系統 ubuntu 14.04 gcc g 4.7.x opencv 2.4.11和3.0.0 matlab r2014b a python 2.7 安裝命令如下所示 解壓 tar zxvf glog 0.3.3.tar.gz 切換路徑 cd glog 0.3.3 sudo conf...