更多框架
文章目錄
- 關于框架
- Caffe
- 基于層的設計思路
- Protocol Buffer 技術
- prototxt .caffemodel文件
- caffe的訓練
- 主要特點
- Torch
- LUA語言
- 主要特點
- Tensorflow
- computation graphs
- MXNET
關于框架
Caffe
依賴大量第三方庫
為了讀取圖像,以及簡單的圖像處理,連接很重的Opencv庫
boost來實現一些C++特征
HD5/LMDB/LEVELDB來做數據IO
ProBuffer使用隨處可見
基于層的設計思路
Blob模塊:實現了tensor功能,保存數據和梯度值
Layer模塊:根據輸入(bottom)blog計算輸出(top)blog,同時保存權重/梯度
NET模塊:有多個layer組成,實現forward/backward計算
SOLVER模塊:最優化模塊,利用梯度值更新權重
Protocol Buffer 技術
引入Protocol Buffer 技術,省去編寫大量描述性的c++代碼,比如配置參數,屬性變量等等
方便序列化,用戶可以直接閱讀protext文件,來了解網絡結構
prototxt .caffemodel文件
protxt描述網絡,通過google的protobuffer編譯器直接讀取/序列化c++對象
caffemodel權重文件
caffe的訓練
需要做數據準備,保存為LMDB/Leveidb格式
不用編寫C++代碼,直接編寫.prototxt定義net對象
直接編寫.protoxt定義net對象
通過參數直接執行caffe命令進行訓練
第一部數據準備
準備數據文件:
通過tools/create命令產生LMDB/LEVEidb格式數據文件
第二步:編寫網絡文件
規則簡單的,可以直接用文本編輯器生成
網絡結構復雜的,利用python腳本生成
注意net protoxt文件描述的是有向無環圖
復雜的網絡
網絡結構復雜:殘差網路
層數比較多,手寫非常低效
網絡結構無法復用,prototxt不具備可編程性
第三步:定義solver文件
簡單手動編寫
第四步:訓練
主要特點
技術細節全面采用c++實現
依賴proto buffer/boost開發庫
gpu加速采用cuda開發
opencv僅僅是補充功能,非核心模塊
Layer based
采用DSL定義網絡結構
layer/blob/net/solver結構
Torch
最靈活最容易學習的深度框架
LUA語言
類似javascript動態語言,LuaJit性能高與大多數腳本語言
結合c語言開發非常簡單,通過Luaffi直接調用c編寫模塊
主要特點
靈活的框架
使用Lua語言作為控制應用層,徹底模塊化設計
友好的交互
快速學習深度學習中各個組件的功能
全程可控的訓練過程
適合實驗新的網絡類型
Tensorflow
google研發
基于computer graphs計算模型
python/c++語言
tensorboard可視化工具
多機多卡支持
computation graphs
首先構造好整個計算鏈路
可以對鏈路進行優化
分布式調度容易實現
MXNET
與tensorflow類似,但在支持圖計算的基礎上,增加過程模擬,支持兩種計算模型
比tensorflow更輕量
總結
- 上一篇: @cacheable 设置过期时间_缓存
- 下一篇: 浙江省计算机二级aoa成绩,浙江省计算机