02 caffe目錄結構

2021-09-06 16:36:36 字數 3527 閱讀 4913

caffe源**是c++編寫的,大量的使用了封裝、繼承和多型,**結構嚴謹,所以很適合用來學習c++的語言特性。

caffe源問閱讀路線最好是從src/calte/proto/caffe.proto開始, 了解基本資料結構記憶體物件和磁碟檔案的一一對映關係(如何從磁碟檔案載入乙個資料結構到記憶體物件, 以及如何將記憶體物件儲存為磁碟檔案, 這中間的過程都是由protobuffer 自動完成的。

第二步是看標頭檔案。先從頭檔案類的宣告理解整個框架,發揮想象力去猜想具體實現。

第三步就是有針對性的去看cpp和cu檔案。一般情況下,caffe框架的**並不需要大改,按照需求派生即可。例如:你使用了乙個新的卷積演算法,需要實現自己的convolutionlayer,則只需要從已經有的convolutionlayer派生乙個新類myconvolutionlayer,然後將前向傳播計算和反向傳播計算按照自己的演算法實現即可。

第四步就是比較自由了,可以編寫各類工具,整合到caffe內部。在/tools中已經有很多實用的工具(如訓練模型、測試模型、特徵提取、轉換資料格式等),可以按照需求進行修改或者擴充套件,另外也可以學習用python或matlab包裝caffe的方法,便於調節模型的訓練效果。

共計77個目錄,我們只需要關注三個目錄:include/,src/和tools/。

├──src//caffe原始碼

│   ├── caffe   

│   │   ├── layers  //各個層具體實現

│   │   │└── absval_layer.cpp

│   │   │└── accuracy_layer.cpp

│   │   │└── argmax_layer.cpp

│   │   │└── base_conv_layer.cpp

│   │   │└── batch_norm_layer.cpp

│   │   │└── batch_reindex_layer.cpp

│   │   │└── bias_layer.cpp

│   │   │└── bnll_layer.cpp

│   │   │└── clip_layer.cpp

│   │   │└── concat_layer.cpp

│   │   │└── contrastive_loss_layer.cpp

│   │   │└── conv_layer.cpp

│   │   │└── crop_layer.cpp

│   │   │└── cudnn_conv_layer.cpp

│   │   │└── cudnn_deconv_layer.cpp

│   │   │└── cudnn_lcn_layer.cpp

│   │   │└── cudnn_lrn_layer.cpp

│   │   │└── cudnn_pooling_layer.cpp

│   │   │└── cudnn_relu_layer.cpp

│   │   │└── cudnn_sigmoid_layer.cpp

│   │   │└── cudnn_softmax_layer.cpp

│   │   │└── cudnn_tanh_layer.cpp

│   │   │└── data_layer.cpp

│   │   │└── deconv_layer.cpp

│   │   │└── dummy_data_layer.cpp

│   │   │└── eltwise_layer.cpp

│   │   │└── elu_layer.cpp

│   │   │└── embed_layer.cpp

│   │   │└── euclidean_loss_layer.cpp

│   │   │└── exp_layer.cpp

│   │   │└── filter_layer.cpp

│   │   │└── flatten_layer.cpp

│   │   │└── hdf5_data_layer.cpp

│   │   │└── hdf5_output_layer.cpp

│   │   │└── hinge_loss_layer.cpp

│   │   │└── im2col_layer.cpp

│   │   │└──image_data_layer.cpp

│   │   │└── infogain_loss_layer.cpp

│   │   │└── inner_product_layer.cpp

│   │   │└── input_layer.cpp

│   │   │└── log_layer.cpp

│   │   │└── loss_layer.cpp

│   │   │└── lrn_layer.cpp

│   │   │└── lstm_layer.cpp

│   │   │└── lstm_unit_layer.cpp

│   │   │└── memory_data_layer.cpp

│   │   │└── multinomial_logistic_loss_layer.cpp

│   │   │└── mvn_layer.cpp

│   │   │└── neuron_layer.cpp

│   │   │└── parameter_layer.cpp

│   │   │└── pooling_layer.cpp

│   │   │└── power_layer.cpp

│   │   │└── prelu_layer.cpp

│   │   │└──recurrent_layer.cpp

│   │   │└── reduction_layer.cpp

│   │   │└── relu_layer.cpp

│   │   │└── reshape_layer.cpp

│   │   │└── rnn_layer.cpp

│   │   │└── scale_layer.cpp

│   │   │└── sigmoid_cross_entropy_loss_layer.cpp

│   │   │└── sigmoid_layer.cpp

│   │   │└── silence_layer.cpp

│   │   │└── slice_layer.cpp

│   │   │└── softmax_layer.cpp

│   │   │└── softmax_loss_layer.cpp

│   │   │└── split_layer.cpp

│   │   │└── spp_layer.cpp

│   │   │└── swish_layer.cpp

│   │   │└── tanh_layer.cpp

│   │   │└── threshold_layer.cpp

│   │   │└── tile_layer.cpp

│   │   │└── window_data_layer.cpp

Linux目錄結構詳解02

重要子目錄詳解 1 etc issue 說明 記錄使用者登入前顯示的資訊 命令 cat n etc issue 2 etc motd 說明 登入提醒 命令 echo welcome to my training compute service etc motd cat etc motd 3 etc ...

caffe這個c 工程的目錄結構

caffe資料夾下主要檔案 docs幫助文件 example一些 樣例 matlabmatlab介面檔案 pythonpython介面檔案 model一些配置好的模型引數 scripts一些文件和資料用到的指令碼 下面是核心 資料夾 後面的學習主要圍繞後面兩個檔案目錄 include和src 下的 ...

02Linux檔案目錄結構

多使用者作業系統 指一台計算機在同一時間可以由 多個使用者 使用,多個使用者共同享用系統的全部硬體和軟體資源 位於 home user,稱之為使用者工作目錄或家目錄,表示方式 home user home 系統預設的使用者家目錄,新增使用者賬號時,使用者的家目錄都存放在此目錄下 lib usr li...