【Caffe】為什麼Caffe裡頭有mutable_cpu_data和cpu_data
const void* SyncedMemory::cpu_data() {
to_cpu();
return (const void*)cpu_ptr_;
}
void* SyncedMemory::mutable_cpu_data() {
to_cpu();
head_ = HEAD_AT_CPU;
return cpu_ptr_;
}
他們之間就相差一個
head_ = HEAD_AT_CPU;
這是為什麼呢?為啥需要這樣做?
我想原因就是
當你想讀取資料的時候請使用cpu_data
當然想修改資料的時候請你使用mutable_cpu_data。
這樣就提示系統資料我改過啦,你要小心了的意思。
第一個cpu_data表示可讀;第二個mutable_cpu_data表示可讀寫
相關推薦
【Caffe】為什麼Caffe裡頭有mutable_cpu_data和cpu_data
const void* SyncedMemory::cpu_data() { to_cpu(); return (const void*)cpu_ptr_; } void* SyncedMemory::mutable_cpu_data() { to_cpu(); head_ =
【12】Caffe學習系列:訓練和測試自己的圖片
一、準備資料 有條件的同學,可以去imagenet的官網http://www.image-net.org/download-images,下載imagenet圖片來訓練。驗證碼始終出不來需要翻牆(是google網站的驗證碼)。但是我沒有下載,原因是資料太大了。。。 我去網上找了一些其它的圖片
【caffe】模板分離編譯模式和工廠模式
本文轉自: https://blog.csdn.net/raby_gyl/article/details/68489152 caffe中的模板分離編譯模式和工廠模式 1.caffe中模板分離編譯模式的實現方式是在每一個模板原始檔的最後新增一條類似於下面的語句: INST
【轉載】Caffe學習:運行caffe自帶的兩個簡單例子
0.00 練習 siam 其它 sudo 單例 復制 腳本 policy 原文:http://www.cnblogs.com/denny402/p/5075490.html 為了程序的簡潔,在caffe中是不帶練習數據的,因此需要自己去下載。但在caffe根目錄下的data
【14】Caffe學習系列:計算圖片資料的均值
圖片減去均值後,再進行訓練和測試,會提高速度和精度。因此,一般在各種模型中都會有這個操作。 那麼這個均值怎麼來的呢,實際上就是計算所有訓練樣本的平均值,計算出來後,儲存為一個均值檔案,在以後的測試中,就可以直接使用這個均值來相減,而不需要對測試圖片重新計算。 一、二進位制格式的均值計算
【13】Caffe學習系列:資料視覺化環境(python介面)配置
caffe程式是由c++語言寫的,本身是不帶資料視覺化功能的。只能藉助其它的庫或介面,如opencv, python或matlab。更多人會使用python介面來進行視覺化,因為python出了個比較強大的東西:ipython notebook, 現在的最新版本改名叫jupyter notebook
【11】Caffe學習系列:影象資料轉換成db(leveldb/lmdb)檔案
在深度學習的實際應用中,我們經常用到的原始資料是圖片檔案,如jpg,jpeg,png,tif等格式的,而且有可能圖片的大小還不一致。而在caffe中經常使用的資料型別是lmdb或leveldb,因此就產生了這樣的一個問題:如何從原始圖片檔案轉換成caffe中能夠執行的db(leveldb/lmdb)
【10】Caffe學習系列:命令列解析
caffe的執行提供三種介面:c++介面(命令列)、python介面和matlab介面。本文先對命令列進行解析,後續會依次介紹其它兩個介面。其實大部分情況下我們會使用python介面進行呼叫,當然caffe提供了C++命令列介面,還是有必要了解一下。命令列引數有個優點是支援多GPU執行。 caf
【9】Caffe學習系列:執行caffe自帶的兩個簡單例子
為了程式的簡潔,在caffe中是不帶練習資料的,因此需要自己去下載。但在caffe根目錄下的data資料夾裡,作者已經為我們編寫好了下載資料的指令碼檔案,我們只需要聯網,執行這些指令碼檔案就行了。 注意:在caffe中執行所有程式,都必須在根目錄下進行,即/caffe,否則會出錯,因為指令碼檔案
【8】Caffe學習系列:solver優化方法
上文提到,到目前為止,caffe總共提供了六種優化方法: Stochastic Gradient Descent (type: "SGD"), AdaDelta (type: "AdaDelta"), Adaptive Gradient (type: "AdaGrad"),
【7】Caffe學習系列:solver及其配置
solver算是caffe的核心的核心,它協調著整個模型的運作。caffe程式執行必帶的一個引數就是solver配置檔案。執行程式碼一般為 $ caffe train --solver=*_slover.prototxt 在Deep Learning中,往往loss function是非凸的
【6】Caffe學習系列:Blob,Layer and Net以及對應配置檔案的編寫
深度網路(net)是一個組合模型,它由許多相互連線的層(layers)組合而成。Caffe就是組建深度網路的這樣一種工具,它按照一定的策略,一層一層的搭建出自己的模型。它將所有的資訊資料定義為blobs,從而進行便利的操作和通訊。Blob是caffe框架中一種標準的陣列,一種統一的記憶體介面,它詳細
【5】Caffe學習系列:其它常用層及引數
本文講解一些其它的常用層,包括:softmax_loss層,Inner Product層,accuracy層,reshape層和dropout層及其它們的引數配置。 1、softmax-loss softmax-loss層和softmax層計算大致是相同的。softmax是一個分類器,計算的
【4】Caffe學習系列:啟用層(Activiation Layers)及引數
在啟用層中,對輸入資料進行啟用操作(實際上就是一種函式變換),是逐元素進行運算的。從bottom得到一個blob資料輸入,運算後,從top輸入一個blob資料。在運算過程中,沒有改變資料的大小,即輸入和輸出的資料大小是相等的。 輸入:n*c*h*w 輸出:n*c*h*w 常用的啟用函式有
【3】Caffe學習系列:視覺層(Vision Layers)及引數
所有的層都具有的引數,如name, type, bottom, top和transform_param. 本文只講解視覺層(Vision Layers)的引數,視覺層包括Convolution, Pooling, Local Response Normalization (LRN),
【2】Caffe學習系列:資料層及引數
要執行caffe,需要先建立一個模型(model),如比較常用的Lenet,Alex等, 而一個模型由多個屋(layer)構成,每一屋又由許多引數組成。所有的引數都定義在caffe.proto這個檔案中。要熟練使用caffe,最重要的就是學會配置檔案(prototxt)的編寫。 層有很多種型別,
【5】caffe的python介面學習:訓練模型(training)
如果不進行視覺化,只想得到一個最終的訓練model, 那麼程式碼非常簡單,如下 : import caffe caffe.set_device(0) caffe.set_mode_gpu() solver = caffe.SGDSolver('/home/yeler082/data/solver
【4】caffe的python介面學習:生成solver檔案
caffe在訓練的時候,需要一些引數設定,我們一般將這些引數設定在一個叫solver.prototxt的檔案裡面,如下: base_lr: 0.001 display: 782 gamma: 0.1 lr_policy: "step" max_iter: 78200 momentum
【3】caffe的python介面學習:生成配置檔案
caffe是C++語言寫的,可能很多人不太熟悉,因此想用更簡單的指令碼語言來實現。caffe提供matlab介面和python介面,這兩種語言就非常簡單,而且非常容易進行視覺化,使得學習更加快速,理解更加深入。 如何配置CAFFE的python介面? 如何將圖片轉換成LMDB檔案? 如何
【轉】Caffe Windows版本的編譯
Caffe Windows版本的編譯 (2014-11-13 14:14:59) 原文地址:http://blog.sina.com.cn/s/blog_52f26d0f0102v6hm.html 電腦太差,僅備份,未驗證