呼叫caffemodel中的權重賦值給自己的網路

2021-08-17 02:44:35 字數 1221 閱讀 4375

呼叫預訓練好的caffemodel,將其權重賦值給自己網路中的對應層。基本思路比較簡單,三步走:

1、載入預定義的caffemodel;

2、載入要訓練的網路;

3、將預訓練model的引數賦值給要訓練的網路。

import caffe

import numpy as np

import math

# 載入預訓練網路

net_ = caffe.net("deploy.prototxt", "***.caffemodel", caffe.test)

caffe.set_device(0)

caffe.set_mode_gpu()

# 設定自己要訓練的網路

solver = caffe.sgdsolver('solver.prototxt')

# 複製對應層的引數給自己的網路

for param_name in net_.params.keys():

print param_name

if len(net_.params[param_name])==1:

solver.net.params[param_name][0].data[...]=net_.params[param_name][0].data[...]

if len(net_.params[param_name])==2:

solver.net.params[param_name][0].data[...]=net_.params[param_name][0].data[...]

solver.net.params[param_name][1].data[...]=net_.params[param_name][1].data[...]

if len(net_.params[param_name])==3:

solver.net.params[param_name][0].data[...]=net_.params[param_name][0].data[...]

solver.net.params[param_name][1].data[...]=net_.params[param_name][1].data[...]

solver.net.params[param_name][2].data[...]=net_.params[param_name][2].data[...]

# 開始訓練

solver.solve()

caffemodel權值視覺化

通過前面的學習,我們已經能夠正常訓練各種資料了。設定好solver.prototxt後,我們可以把訓練好的模型儲存起來,如lenet iter 10000.caffemodel。訓練多少次就自動儲存一下,這個是通過snapshot進行設定的,儲存檔案的路徑及檔名字首是由snapshot prefix...

caffe 檢視caffemodel中的引數與資料

在用caffe訓練完乙個模型之後,我們想更加直觀的檢視這個模型該怎麼做呢?caffe框架訓練出來的caffemodel是乙個類似於黑盒的東西,我們無法直接看到它的本質,需要借助caffe所定義的介面來協助我們。詳細的文件在caffe官網上都有介紹 如果我們用f wx b來表示運算的過程,那w和b就是...

caffemodel的生成和利用

1 呼叫solver.prototxt生成.caffemodel和.solverstate caffe中的bin資料夾裡有caffe.exe,在上級目錄中建立.bat檔案,新增內容並儲存執行 bin caffe.exe train solver examples cifar10 cifar10 qu...