在深度學習領域,Caffe框架是人們沒法繞過的一座山。這不只是由於它不管在結構、性能上,仍是在代碼質量上,都稱得上一款十分出色的開源框架。更重要的是,它將深度學習的每個細節都原本來本地展示出來,大大下降了人們學習研究和開發的難度。linux
1、從Caffe的開發中瞭解到的用戶需求:
深度學習的框架總會不斷改變,Caffe也會有被新框架代替的一天。可是在開發Caffe的過程當中,賈揚清發現你們喜歡的框架其實有着不少類似的地方,這些閃光點擁有很長的生命週期,發現並掌握人們這些共同偏好將爲之後開發新的框架積累經驗。
Caffe之因此廣受歡迎多是由於有如下的四個特色:
一、 穩定的模型架構
Caffe經過Protobuf來定義一個網絡的結構,而這個由Google開源的庫具備優秀的版本兼容性。隨着Caffe的框架源碼的不斷更新迭代,以前定義的網絡結構依然能兼容解析,模型仍然能正確加載運行。
二、較好的設備抽象
合理的設備抽象可以精簡代碼,提升框架適用性。在這方面Caffe作了比較好的嘗試,模型的訓練和使用與不一樣的平臺耦合比較低,只要平臺能解析網絡結構並讀取二進制的模型參數,就能運行該模型。這樣大大拓展了框架的應用範圍,天然更加符合用戶的使用需求。
三、清晰的說明教程
如何讓首次接觸到框架的人經過說明教程就能最快地熟悉運用,這對於一個新面世的框架來講尤其重要。以Caffe爲例,用戶只須要將官方文檔的例子跑一遍,基本就能清楚Caffe的操做過程和細節,這給它的普遍傳播提供了最堅實的基礎。
四、開放的模型倉庫
目前Caffe還維護了一個Model Zoo, 許多論文的做者會將模型發佈到這裏,其它用戶能夠利用這些材料輕鬆地將模型復現,還能夠在github上參與開發討論,從而更深刻地學習實踐。android
2、現有深度學習框架的側重點:
一、人們的需求多種多樣,目前,尚未任何一種深度學習的框架可以知足人們全部的需求。對於工業界而言,從業者看重的是框架的穩定性強、數據量大、速度快、容易進行數據整合等。
二、對於學術界來講,學者們更但願框架容易調試、靈活性要強、迭代要快。所以,比照現有深度學習框架的特色,Theano、Torch可能會更加適合學術界,而D4J等可能就要更適合工業界一些,至於Caffe、Tensorflow等爲表明的框架則是介於兩者之間。
3、對將來機器學習框架設計的一些思考:
一、使用計算圖 (computation graph)
Caffe框架在實現網絡的forward, backward, update時,是經過Solver, Net, Layer之間遞進地逐步回調對應的forward, backward, update來實現的,在加入並行化以後,爲了用計算來覆蓋數據傳輸的時間,這些回調的運用會變得相對複雜。
所以,目前許多框架都在往computation graph的風格上偏移。這種基於computation graph的深度學習框架不只在網絡的更新方面更加直接,並且在並行方面,不管是數據並行方式仍是模型並行方式,都能作到接近線性的提速。你們將來也能夠在這個方向作些嘗試。
二、高效方便地輸入數據
對於Caffe用戶而言,首要問題即是如何導入數據。尤爲是在算法比較簡單時,保證數據輸入的高效性將成爲制約模型的首要因素。以前進行的某個項目裏,在8個GPU(Titan X)上訓練AlexNet,須要達到每秒鐘處理1600張圖片(3.14GB/s)的要求。甚至對於另一些模型而言,還須要更多的吞吐量。若是數據接口沒有作好,是絕對沒法達到這樣的要求的。
三、更快的速度
網絡結構實現須要在靈活性和速度上進行權衡,這種權衡能夠體如今框架設計的粗細粒度上。例如一個Inception的結構,是作成像Caffe這樣經過各個層的累積來造成,仍是直接由Conv2D, BiasAdd, Relu這樣的基本計算來直接構造一個Inception結構。這樣不一樣粗細粒度的構建方法體現了整個框架對速度或是靈活性的權衡。
另外,對於底層的實現,最好用硬件供應商提供的數值計算庫,好比CuDNN, MKL-DNN,Accelerate,Eigen,NNPack等。
四、 可移植性
要提高框架的實用價值,就必須提高其訓練出的模型的可移植性。換句話說,也就是要讓框架訓練出的模型具備平臺無關性,包括了系統層面(windows、linux、android、iOS、OS X等)及硬件層面(CPU、GPU、FPGA、ARM等)。這就必須使得設計出的模型更加輕量。git
-----------------------------------------github
人工智能範疇及深度學習主流框架算法
工業機器人,家用機器人這些只是人工智能的一個細分應用而已。
圖像識別,語音識別,推薦算法,NLP天然語言,廣告算法,預測算法,數據挖掘,無人駕駛、醫療諮詢機器人、聊天機器人,這些都屬於人工智能的範疇。windows
人工智能如今用到的基礎算法是深度學習裏面的神經網絡算法,具體應用場景有不一樣的專業算法
實際上不少細分領域的,差異仍是不少的
機器人的對運動控制算法,圖像識別算法要求比較高
像alphaGo,推薦算法,語音識別這些就主要靠深度學習算法和大數據訓練了網絡
深度學習的開源框架如今主流的有:caffeonspark(微軟), tensorflow(google),Theano,dl4j, Torch,Keras
caffeonspark用在視覺圖片識別上比較好,dl4j用在NLP上作相似問答搜索的比較多,tensorflow用在學習新的算法上比較好架構
關注主頁一塊兒學習交流框架