caffe學習(1)caffe模型三種結構
caffe模型三種結構
Blob:儲存和傳遞(communication)
blob是資料儲存和傳輸的包裝,並且還在底層提供CPU和GPU之間的同步能力。Blob提供了儲存資料的統一儲存器介面; 例如影象批次,模型引數和用於優化的導數。 在數學上,blob是以C連續方式(C-contiguous fashion)儲存的N維陣列。
關於C連續方式,stackoverflow有一個解釋。該方式主要與Fortran和Matlab相反,是一種以行為主順序(Row-major order)的儲存方式,簡單的說就是把一行存完,再存下一行,把第一個通道(channel)的所有行寫完後寫完再寫下一個通道。例如對一批(batches)影象,用4維blob儲存,表示為number N(資料批量大小) x channel K(通道、維度特徵) x height H (高)x width W(寬),對於索引 (n, k, h, w) 的實體地址就是:((n * K + k) * H + h) * W + w,注意區分大小寫,大寫是總的,小寫是索引值。對於影象是4D的,當然也可以不用4D。具體引數需要根據層型別和資料大小配置。
blob使用了兩塊儲存區域,為data(資料)和diff(網路梯度),實際值可以儲存在CPU或GPU上,訪問也可以不變(const)訪問或者可變(mutable)訪問。
const Dtype* cpu_data() const;
Dtype* mutable_cpu_data();
同理可得GPU上diff型別資料操作。官網上有一個example,展示了資料在CPU和GPU上流動操作。
Layer計算和連線
Layer包括很多計算方法,如
- Vision Layers:Convolution、Pooling、LRN
- Loss Layers:Softmax、Sum-of-Squares
既然作為計算,就有輸入輸出,輸入從底部(bottom)獲取,並通過頂部(top)連線輸出。每層須有三個關鍵計算:setup, forward, and backward。
- setup:初始化層和連線。
- forward:底部向頂部計算。
- backward:給定梯度,從top計算傳回bottom。
A layer with parameters computes the gradient w.r.t. to its parameters and stores it internally.
(是說存在layer中嗎)
forward和backward也分為CPU和GPU兩個版本。
If you do not implement a GPU version, the layer will fall back to the CPU functions as a backup option. This may come handy if you would like to do quick experiments, although it may come with additional data transfer cost
這裡好像是說使用GPU會因為資料需要從CPU複製到GPU上,因此會有資料傳輸成本,但GPU跑的還是快一些,所以是quick experiments。
Net定義和操作
Net由Layer組成(The net is a set of layers connected in a computation graph
有向無環圖)。模型初始化由Net :: Init()處理:主要是建立blob和layer,並呼叫layer裡的setup,同時會輸出INFO。
模型格式
模型定義在.prototxt檔案中,訓練好的模型在model目錄下.binaryproto格式的檔案中,模型的格式由caffe.proto定義。
相關文章
- caffe study - 資料結構(1)資料結構
- Caffe程式碼結構
- 【caffe2從頭學】:2.學習caffe2
- opencv呼叫caffe模型OpenCV模型
- Caffe學習紀錄01
- caffe的基本資料結構資料結構
- Caffe:Layer的相關學習
- (2)caffe總結之目錄結構
- 深度學習模型之各種caffe版本(Linux和windows)的網址和配置深度學習模型LinuxWindows
- Caffe轉mxnet模型——mmdnn模型DNN
- 《深度學習:21天實戰Caffe》深度學習
- Caffe 深度學習框架上手教程深度學習框架
- caffe study- AlexNet 之結構篇
- (14)caffe總結之Linux下Caffe如何除錯Linux除錯
- Caffe訓練模型時core dump模型
- 賈揚清分享_深度學習框架caffe深度學習框架
- caffe中各種cblas的函式使用總結函式
- Caffe轉mxnet模型——mxnet工具模型
- caffe整體框架的學習的部落格,這個部落格山寨了一個caffe框架框架
- Caffe學習系列(21):caffe圖形化操作工具digits的安裝與執行Git
- 深度學習 Caffe 記憶體管理機制理解深度學習記憶體
- 深度學習---之caffe如何加入Leaky_relu層深度學習
- 如何在Caffe中配置每一個層的結構
- caffe 網路結構幾個部分簡單介紹
- 【Caffe篇】--Caffe solver層從初始到應用
- (11)caffe總結之命令列解析命令列
- 【機器學習PAI實踐十】深度學習Caffe框架實現影象分類的模型訓練機器學習AI深度學習框架模型
- caffe make 編譯編譯
- 深度學習 Caffe 初始化流程理解(資料流建立)深度學習
- 深度學習 Caffe 初始化流程理解(資料流建立)深度學習
- (8)caffe總結之solver及其配置
- 【Caffe篇】--Caffe從入門到初始及各層介紹
- 【caffe筆記1】caffe+win10+VS2013配置與常見問題(簡單易懂)筆記Win10
- caffe+SSD封裝封裝
- Matlab 使用caffe示例Matlab
- 【蜂口 | AI人工智慧】caffe模型訓練——龍鵬的一站式caffe工程實踐連載(七)AI人工智慧模型
- TensorFlow和Caffe、MXNet、Keras等深度學習框架的對比Keras深度學習框架
- 賈揚清:希望Caffe成為深度學習領域的Hadoop深度學習Hadoop