Theano誕生於2008的,由蒙特利爾大學Lisa Lab團隊開發維護,因出現時間早,可以算是這類庫的始祖之一。核心是一個數學表達式的編譯器,專爲處理大規模神經網絡訓練設計。
主要優勢:
1)集成NumPy,可以直接使用NumPy和ndarray,API接口學習成本低
2)計算穩定性好,如可以精準計算輸出值很小的函數(像log(1+x))
3)動態的生成C或CUDA代碼,用以編譯成高效機器代碼
Theano是完全基於Python(C++/CUDA代碼也是打包爲Python字符串)的符號計算庫。
創始人是加州大學伯克利的Ph.D.賈揚清,同時是TensorFlow作者之一。
Caffe主要優點:
1)容易上手,網絡結構是以配置文件形式定義,不需要代碼設計風格
2)訓練速度快,能訓練state-of-the-art的模型與大規模數據
3)組件模塊化,可方便拓展到新的模型和學習任務上
Caffe核心概念是Layer,每一個神經網絡的模塊都是一個Layer,Layer接收輸入數據,同時經內部計算產出數據。設計網絡時,只要把各個Layer通過編寫protobuf配置文件定義拼接在一起組成完整網絡。實現新的Layer時,需要將正向和反向兩種計算過程的函數都實現,這部分需要用戶自已寫C++或者CUDA代碼,對普通用戶來說比較難上手。Caffe最開始設計時只針對圖像,所以他對卷積神經網絡支持的非常好。
Torch自已定位是LuaJIT上的高效科學計算庫,優先GPU,上層使用lua語言作爲網絡設計語言,底層C++.
Torch的nn庫支持神經網絡,自編碼器,線性迴歸,卷積網絡,循環神經網絡等 ,同時支持定製的損失函數及梯度計算。 Torch也是基於Layer的連接來定義網絡, Torch屬於命令式編程模式。