原创 Caffe 源碼閱讀筆記 [基本模塊] Caffe.cpp

概述 到目前爲止,我們已經把所有Caffe的基本模塊從最基本的SyncedMemory到最上層的Solver都過了一遍。那麼Caffe最後是怎麼把他們串在一起的呢?這一篇主要講解Caffe從main函數開始是怎麼完成整個訓練過程和測試過程

原创 Caffe 源碼閱讀筆記 [基本模塊] Syncedmem & Blob

syncedmem syncedmem管理一段大小爲size的內存。這段內存可以從GPU或者主機內存分配,syncedmem負責GPU和主機內存之間的同步。如果數據是在GPU裏而要從主機內存取出,syncedmem會先把數據從GPU內存

原创 Caffe 實踐 在macOS (版本號10.11) 上安裝Caffe

安裝Caffe 主要是按照Caffe官方指南安裝的,但遇到各種各樣的問題。下面把我安裝時遇到的問題和教訓列出來,做個記錄。我安裝的cuda版本是7.5,BLAS使用的是openblas,CuDNN版本是5.1 遇到的坑 無法用brew

原创 Caffe 實踐 在數據集MNIST上使用LeNet

概述 安裝好Caffe後,這篇文章是我根據http://caffe.berkeleyvision.org/gathered/examples/mnist.html 進行學習的筆記。在Caffe上做模型訓練,要按照四個步驟來執行:1、準備數

原创 深度學習論文筆記 [圖像處理] Deep Residual Learning for Image Recognition

概要 證明了殘差網絡更容易訓練,而且網絡更深的時候能夠取得更高的準確率。在ImageNet數據集上我們使用152層的殘差網絡並取得了3.57%的錯誤率。 簡介 深度網絡一直存在梯度消散的問題,但最近這個問題已經被normalized in

原创 Caffe 源碼閱讀筆記 [DB] 存儲Caffe數據的LevelDB類

概述 上一篇文章 描述Caffe如何從DB讀取訓練集數據。這篇要研究DB的具體實現是什麼樣子的。Caffe目前支持從LevelDB和lmdb兩種key-value store讀取和存儲數據。我個人認爲rocksdb(leveldb的改進版

原创 Caffe 源碼閱讀筆記 [基本模塊] 網絡Net

概述 前面講了Layer,Net就是把Layer串起來的神經網絡。本篇主要討論在神經網絡中如何進行Layer之間的管理和計算 Net成員變量 網絡相關變量 string name_; // 網絡名字 Phase phase_; /

原创 Caffe 源碼閱讀筆記 [基本模塊] Solver

概述 前面介紹了網絡Net模塊來描述一個神經網絡,Solver負責生成訓練網絡和測試網絡並按照算法對網絡進行參數優化。跟Layer一樣,Caffe把Solver實現成一個接口,使得開發者可以開發自己的Solver,其中Solver的子類需

原创 Caffe 源碼閱讀筆記 [數據讀入和處理] DataReader和DataTransformer

概述 這一篇主要閱讀Caffe如何從數據源讀取訓練數據和如何對訓練數據進行變換。 DataReader DataReader通過LayerParameter獲取配置信息。一個訓練數據集可以讀取到多個GPU(solver)進行訓練。爲了保證

原创 Caffe 源碼閱讀筆記 [基本模塊] Layer和LayerFactory

概述 因爲前兩篇講的是數據的讀取,本來是打算閱讀DataLayer這一塊的,但考慮到DataLayer是Layer的子類,因此從Caffe的另一個重要模塊Layer開始看起感覺更自然。畢竟Caffe裏面最多的代碼都是各種各樣的Layer,