原创 【caffe源碼研究】第三章:源碼篇(5) :Net

簡介 通過合成和自動微分,網絡同時定義了一個函數和其對應的梯度。通過合成各層的輸出來計算這個函數,來執行給定的任務,並通過合成各層的後向傳播過程來計算來自損失函數的梯度,從而學習任務。Caffe模型是端到端的機器學習引擎。 準確

原创 【caffe源碼研究】第四章:完整案例源碼篇(5) :LeNet反向過程

本部分剖析Caffe中Net::Backward()函數,即反向傳播計算過程。從LeNet網絡角度出發,且調試網絡爲訓練網絡,共9層網絡。 入口信息 Net::Backward()函數中調用BackwardFromTo函數,從網絡

原创 【caffe源碼研究】第四章:完整案例源碼篇(2) :LeNet初始化訓練網絡

一、Solver到Net SGDSolver的構造函數中主要執行了其父類Solver的構造函數,接着執行Solver::Init()函數,在Init()中,有兩個函數值得注意:InitTrainNet()和InitTestNets

原创 【caffe源碼研究】第四章:完整案例源碼篇(1) :LeNetSolver初始化

在訓練lenet的train_lenet.sh中內容爲: ./build/tools/caffe train –solver=examples/mnist/lenet_solver.prototxt 由此可知,訓練網咯模型是由to

原创 【caffe源碼研究】第三章:源碼篇(12) :激活函數層

以ReLULayer爲例,比較簡單,直接上代碼 前向就是根據激活函數表達式計算,反向就是計算倒數。 #include <algorithm> #include <vector> #include "caffe/layers/r

原创 【caffe源碼研究】第四章:完整案例源碼篇(4) :LeNet前向過程

入口信息 通過如下的調用堆棧信息可以定位到函數ForwardFromTo(其他函數中無重要信息) caffe::Net<float>::ForwardFromTo() at net.cpp:574 caffe::Net<float

原创 VS code server使用

VS code server使用 前言 發現了一個可以遠程debug代碼的神奇,VS code的在線版,code server https://github.com/cdr/code-server 遠程服務器上的代碼,通過在遠程服

原创 【caffe源碼研究】第三章:源碼篇(7) :Layer種類

Caffe自帶的Layer及其參數被定義在caffe.proto中。 一、分類 在Layer的派生類中,主要可以分爲 (1) Vision Layers Vison 層主要用於處理視覺圖像相關的層,以圖像作爲輸入,產生其他的圖像。

原创 【caffe源碼研究】第三章:源碼篇(4) :Solver

一個典型的solver文件如下 # The train/test net protocol buffer definition net: "examples/mnist/lenet_train_test.prototxt" # t

原创 【caffe源碼研究】第三章:源碼篇(13) :損失層

在訓練階段有損失層,損失層需要兩個輸入的Blob,一個是網絡的預測值,一個是真實的標籤。 基類LossLayer,其他的loss繼承自這個類。 這裏以歐拉損失爲例來說明 原理 歐拉損失 E=12N∑n=1N||yn−y‘n||2

原创 【caffe源碼研究】第三章:源碼篇(2) :Blob 和 SyncedMemory

一、Blob 在之前的介紹中提到 Blob是: 對處理數據的一層封裝,用於在Caffe中通信傳遞。 也爲CPU和GPU間提供同步能力 數學上,是一個N維的C風格的存儲數組 總的來說,Caffe使用Blob來交流數據,其是Caff

原创 【caffe源碼研究】第三章:源碼篇(10) :ConvolutionLayer

簡介 CNN最經典的幾個層,這裏介紹一下卷積層。 這張圖總結的不太全面,但是基本表現出了卷積層的繼承關係。 BaseConvolutionLayer 其繼承自Layer,是一個卷積以及反捲積操作的基類,首先我們來看BaseCon

原创 【caffe源碼研究】第三章:源碼篇(11) :PoolingLayer

Pooling層也是CNN中重要的層。 主要分成max-pool和mean-pool兩種方法 Forward_cpu 前向過程如下 void PoolingLayer<Dtype>::Forward_cpu(const vect

原创 【caffe源碼研究】第三章:源碼篇(8) :Layer代碼

簡介 Layer是Caffe模型的本質內容和執行計算的基本單元。Layer可以進行很多運算,如:convolve(卷積)、pool(池化)、inner product(內積),rectified-linear和sigmoid等非線

原创 【caffe源碼研究】第三章:源碼篇(9) :DataLayer

先從最基礎的Data層講起。 看看datalayer相關的類的繼承關係 首先定義了一個 template <typename Dtype> class Batch { public: Blob<Dtype> data_,