Caffe的依賴庫

2021-10-22 14:39:24 字數 1369 閱讀 3906

1、boost庫

boost庫是乙個可移植、提供源**的c++庫,作為標準庫的後備,是c++標準化程序的開發引擎之一,boost庫由c++標準委員會庫工作組成員發起,其中有些內容有望成為下一代c++標準庫內容,它在c++社群中影響甚大,是不折不扣的「準」標準庫。boost由於其對跨平台的強調,與編譯平台無關。caffe採用c++作為主開發語言,其中大量的**依賴於boost庫。

2、cflags庫

cflags庫是google的乙個開源的處理命令列引數的庫,使用c++開發,可以替代getopt函式。cflags與getopt函式不同,在cflags中,標記的定義分散在**中,不需要列舉在乙個地方。caffe採用cflags庫開發caffe的命令列。

3、glog庫

glog是乙個應用程式的日誌庫,提供基於c++風格的流日誌api,以及各種輔助的巨集。它的使用方式與c++的stream操作類似。caffe執行時的日誌輸出依賴於glog庫。

4、leveldb庫

leveldb是google實現的乙個非常高效的key-value資料庫。它是單程序的服務,效能非常高。它是乙個c/c++程式語言的庫。caffe支援兩種語言庫,其中之一為leveldb。

5、lmdb庫

它是乙個超級快、超級小的key-value資料儲存服務,是由openldap專案的symas開發的。使用記憶體對映檔案,因此讀取資料的效能跟記憶體資料庫一樣,其大小受限於虛擬位址空間的大小。caffe支援兩種資料庫,其中之一為lmdb。

6、protobuf庫

google protocol buffer(簡稱protobuf)是一種輕便高效的結構化資料儲存格式,可以用於結構化資料的序列化,或者說序列化。它和適合做資料儲存或rpc資料交換格式。可以用於通訊協議、資料儲存等領域的語言無關、平台無關、可擴充套件的序列化結構資料格式。

要使用protobuf庫,首先需要自己編寫乙個.proto檔案,定義程式中需要處理的結構化資料,在protobuf中,結構化資料被稱為message。在乙個.proto檔案中可以定義多個訊息型別。用protobuf編譯器(protoc.exe)將.proto檔案編譯成目標語言,會生成對應的.**件和.cc檔案,.proto檔案中的每乙個訊息有乙個對應的類。

caffe使用起來非常簡潔,很大程度上是由於caffe採用.proto檔案作為使用者的輸入介面。使用者通過編寫.proto檔案定義網路模型和solver.

7、hdf5庫

hdf(hierarchical data file)是美國國家高階計算應用中心(ncsa)為了滿足各種領域研究的需求而研製的一種能高效儲存和分發科學資料的新型資料格式。它可以儲存不同型別的影象和數碼資料的檔案格式,並且可以在不同型別的機器上傳輸,同時還有統一處理這種檔案格式的函式庫。caffe支援hdf5格式。

參考:《深度學習——caffe之經典模型詳解與實戰》

庫依賴總結

每個專案都或多或少的對第三方庫有依賴關係,但如何把握多少這個度一直是我認為比較棘手的問題。依賴少了,有種閉門造車,從輪子開始的感覺 而依賴多了,又會陷入專案構建,bug查詢,庫穩定性等諸多的問題。本文根據自己在c 專案方面的心得做點總結 依賴原則 a.依賴越少越好 c.依賴穩定的庫,可以通過版本號判...

vc的靜態庫依賴

技術部落格 vc編譯的靜態庫.lib檔案是一系列.obj檔案的集合,這點和linux系統上的靜態庫一致,但是vc的靜態庫有乙個獨有的功能,強制這個靜態庫的使用者必須鏈結某個庫。這點在靜態庫已經有很複雜的依賴關係或者需要強制鏈結某個版本的庫時及其有用。否則,如果靜態庫中用到了其他的庫,需要這個靜態庫的...

動態庫的依賴關係

dll動態庫是非常常用的技術手段,經常會發生巢狀的情況,一不小心系統就提示你缺少某個dll,從而某個函式不能用。今天做了個小測試,記錄如下。1 動態庫a產生後的檔案 a.h a.dll a.lib 2 動態庫b呼叫a的方法,所需a的檔案a.h a.dll a.lib,同時生成b.h b.dll b....