Caffe 框架介紹

2021-07-22 21:55:01 字數 1433 閱讀 8460

1.caffe是一種開源軟體框架,內部提供了一套基本的程式設計框架,或者說乙個模板框架,用以實現gpu並行架構下的深度卷積神經網路,deep learning等演算法,我們可以按照框架定義各種各樣的卷積神經網路的結構,並且可以再此框架下增加自己的**,設計新的演算法,該框架的乙個問題就是,只能夠使用卷積網路,所有框架都是再基於卷積神經網路的模型上進行的。

2.而tensorflow能夠完成更多的深度學習演算法,比如rnn,lstm等。

3.caffe具有三個基本原子結構,顧名思義,原子結構就是說不能隨意更改,caffe的程式設計框架就是在這三個原子下實現,它們分別是:blobs, layers, and nets。

blob就是乙個包裝器,在caffe這個流程中,所有的資料都要被包裝成blob格式。然後在caffe的架構下進行程式設計和處理,這點事我們不能隨意更改的,因為caffe本身提供了很多已經設計好的函式和類,我們隨意更改資料報轉器就等於沒法再使用其中的函式,你就沒法再caffe的框架下設計深度神經網路。blob的格式就是(number,channel,height,width)將資料按照四元組的方式儲存,這裡由於是處理的影象資料,所以後面三維代表影象的資料格式,channel代表影象的通道數,如灰度圖是1通道,channel=1,rgb影象是3通道,channel=3,height和width分別是影象的長寬。至於number則代表batch,由於記憶體有限,所以我們進行訓練的時候我們只能分批進行,這裡還為每個batch設定了乙個標識號,後面會看到我們使用隨機梯度下降演算法(schocastic gredient descent,sgd)對模型進行訓練,其中就是要使用到batch,blob不僅僅只用來儲存深度網路進行前向過程時的資料,還用來儲存在後向求梯度過程時的梯度資料。

具體使用方式:

const dtype* cpu_data() const;

dtype* mutable_cpu_data();

上面兩中格式分別表示資料的固態模式和和自由模式,blob具有cpu的資料儲存和gpu的資料儲存,同時blob將資料在cpu和gpu之間的交換封裝起來了,並進行了同步處理,因此我們不需要理會資料在gpu和cpu之間的互動。

layers是組成網路結構的單位,接受下層的資料作為輸入,通過內部的運算輸出。caffe中網路層的使用定義,和一般的深度學習庫類似,,都有三個步驟,1:建立層,包括建立連線關係初始化其中一些變數。2:前向計算過程,接受輸入資料並計算出輸出,3:後向過程,進行反向梯度的計算,並把梯度儲存在層結構中。

nets是由layers組成的,定義了輸入輸出以及網路各層,就定義了乙個net。比如:乙個最基本的單隱層網路定義如下:

name: 「logreg」

layers

} layers

} layers

可以使用net::init()對定義的網路進行初始化和檢查,初始化包括對一些變數權值初始化,,檢查包括對網路的結構的正確性進行檢查,因為涉及到網路的上下層連線關係的匹配和耦合連線。

python caffe框架 caffe框架基礎

caffe的核心模組 caffe是乙個清晰而高效的深度學習框架,其作者是博士畢業於uc berkeley的賈揚清,目前在google工作。caffe是純粹的c cuda架構,支援命令列 python和matlab介面 可以在cpu和gpu直接無縫切換。caffe的核心模組有三個,分別是blobs l...

caffe 引數介紹

目錄 net models bvlc alexnet train val.prototxt test iter 1000 test interval 1000 base lr 0.01 開始的學習率 lr policy step 學習率的drop是以gamma在每一次迭代中 gamma 0.1 st...

安裝caffe框架記錄

1 安裝虛擬機器及ubuntu ubuntu版本為16.04 2 安裝 sudo apt get install build essential 3 檢視 gcc version 此處版本為 ubuntu 5.3.1 14ubuntu2 5.3.1 4 安裝 sudo apt get install...