主流深度學習框架

2021-09-27 06:22:40 字數 2236 閱讀 7779

深度學習研究的熱潮持續高漲,各種開源深度學習框架也層出不窮,其中包括tensorflow、caffe、keras、cntk、torch7、mxnet、leaf、theano、deeplearning4、lasagne、neon,等等

tensorflow比如設計神經網路結構的**的簡潔度,分布式深度學習演算法的執行效率,還有部署的便利性。

tensorflow是相對高階的機器學習庫,使用者可以方便地用它設計神經網路結構,而不必為了追求高效率的實現親自寫c++或cuda**。

caffe全稱為convolutional architecture for fast feature embedding,是乙個被廣泛使用的開源深度學習框架(在tensorflow出現之前一直是深度學習領域github star最多的專案),目前由伯克利視覺學中心(berkeley vision and learning center,bvlc)進行維護。caffe的創始人是加州大學伯克利的ph.d.賈揚清,他同時也是tensorflow的作者之一,曾工作於msra、nec和google brain,目前就職於facebook fair實驗室。框架原始碼:caffe_github

theano誕生於2023年,由蒙特婁大學lisa lab團隊開發並維護,是乙個高效能的符號計算及深度學習庫。因其出現時間早,可以算是這類庫的始祖之一,也一度被認為是深度學習研究和應用的重要標準之一。theano的核心是乙個數學表示式的編譯器,專門為處理大規模神經網路訓練的計算而設計。它可以將使用者定義的各種計算編譯為高效的底層**,並鏈結各種可以加速的庫,比如blas、cuda等。theano允許使用者定義、優化和評估包含多維陣列的數學表示式,它支援將計算裝載到gpu(theano在gpu上效能不錯,但是cpu上較差)。與scikit-learn一樣,theano也很好地整合了numpy,對gpu的透明讓theano可以較為方便地進行神經網路設計,而不必直接寫cuda**。框架原始碼:theano_github

theano是乙個完全基於python(c++/cuda**也是打包為python字串)的符號計算庫

keras是乙個崇尚極簡、高度模組化的神經網路庫,使用python實現,並可以同時執行在tensorflow和theano上。它旨在讓使用者進行最快速的原型實驗,讓想法變為結果的這個過程最短。theano和tensorflow的計算圖支援更通用的計算,而keras則專精於深度學習。theano和tensorflow更像是深度學習領域的numpy,而keras則是這個領域的scikit-learn。它提供了目前為止最方便的api,使用者只需要將高階的模組拼在一起,就可以設計神經網路,它大大降低了程式設計開銷(code overhead)和閱讀別人**時的理解開銷(cognitive overhead)。它同時支援卷積網路和迴圈網路,支援級聯的模型或任意的圖結構的模型(可以讓某些資料跳過某些layer和後面的layer對接,使得建立inception等複雜網路變得容易),從cpu上計算切換到gpu加速無須任何**的改動。因為底層使用theano或tensorflow,用keras訓練模型相比於前兩者基本沒有什麼效能損耗(還可以享受前兩者持續開發帶來的效能提公升),只是簡化了程式設計的複雜度,節約了嘗試新網路結構的時間。可以說模型越複雜,使用keras的收益就越大,尤其是在高度依賴權值共享、多模型組合、多工學習等模型上,keras表現得非常突出。keras所有的模組都是簡潔、易懂、完全可配置、可隨意插拔的,並且基本上沒有任何使用限制,神經網路、損失函式、優化器、初始化方法、啟用函式和正則化等模組都是可以自由組合的。keras也包括絕大部分state-of-the-art的trick,包括adam、rmsprop、batch normalization、prelu、elu、leakyrelu等。同時,新的模組也很容易新增,這讓keras非常適合最前沿的研究。keras中的模型也都是在python中定義的,不像caffe、cntk等需要額外的檔案來定義模型,這樣就可以通過程式設計的方式除錯模型結構和各種超引數。在keras中,只需要幾行**就能實現乙個mlp,或者十幾行**實現乙個alexnet,這在其他深度學習框架中基本是不可能完成的任務。keras最大的問題可能是目前無法直接使用多gpu,所以對大規模的資料處理速度沒有其他支援多gpu和分布式的框架快。keras的程式設計模型設計和torch很像,但是相比torch,keras構建在python上,有一套完整的科學計算工具鏈,而torch的程式語言lua並沒有這樣一條科學計算工具鏈。無論從社群人數,還是活躍度來看,keras目前的增長速度都已經遠遠超過了torch。框架原始碼:keras_github

對比主流深度學習框架

現在的主要的框架主要是呈以上的排名分部 tensorflow theano keras lasagne caffe dsstne torch mxnet dl4j cognitive toolkit主要是有以上這十種框架。是乙個基於資料流程式設計 dataflow programming 的符號數學...

深度學習框架

近一年來,深度學習的風起雲湧,產生了許多令人興奮的成果,同時,深度學習框架也是百家爭鳴。經過這一年的觀察,tensorflow 似乎成為了一種潮流,並且越來越多的框架開始為 keras 提供支援,它可能會成為一種標準。今後選擇keras框架作為深度學習的目標。keras 被認為是構建神經網路的未來,...

移動端DL框架 當前主流的移動端深度學習框架一覽

在這個專欄中,我們會介紹與移動端的模型訓練和部署有關的框架的使用。作者 編輯 言有三 深度學習模型要落地,比如要部署到手機等移動端平台,之前給大家介紹的用於訓練的框架就不能直接使用了,我們需要相應的移動端框架,目前國內外各大公司紛紛開源自家的框架。tensorflow lite使用android n...