'一文看懂6個深度學習著名框架,你用過幾個?'
導讀:近幾年,深度學習技術的大爆炸式發展,除了理論方面的突破外,還有基礎架構的突破,這些都奠定了深度學習繁榮發展的基礎。本文將對其中湧現出的幾個著名的深度學習平臺進行簡要介紹。
作者:魏溪含 塗銘 張修鵬
如需轉載請聯繫華章科技
導讀:近幾年,深度學習技術的大爆炸式發展,除了理論方面的突破外,還有基礎架構的突破,這些都奠定了深度學習繁榮發展的基礎。本文將對其中湧現出的幾個著名的深度學習平臺進行簡要介紹。
作者:魏溪含 塗銘 張修鵬
如需轉載請聯繫華章科技
01 Theano
Theano是在BSD許可證下發布的一個開源項目,是由LISA集團(現MILA)在加拿大魁北克的蒙特利爾大學開發的,其是以一位希臘數學家的名字命名的。
導讀:近幾年,深度學習技術的大爆炸式發展,除了理論方面的突破外,還有基礎架構的突破,這些都奠定了深度學習繁榮發展的基礎。本文將對其中湧現出的幾個著名的深度學習平臺進行簡要介紹。
作者:魏溪含 塗銘 張修鵬
如需轉載請聯繫華章科技
01 Theano
Theano是在BSD許可證下發布的一個開源項目,是由LISA集團(現MILA)在加拿大魁北克的蒙特利爾大學開發的,其是以一位希臘數學家的名字命名的。
Theano是一個Python庫,可用於定義、優化和計算數學表達式,特別是多維數組(numpy.ndarray)。它的誕生是為了執行深度學習中的大規模神經網絡算法,從本質上而言,Theano可以被理解為一個數學表達式的編譯器:用符號式語言定義程序員所需的結果,並且Theano可以高效地運行於GPU或CPU中。
在過去很長一段時間內,Theano是深度學習開發與研究的行業標準。而且,由於出身學界,它最初是為學術研究而設計的,這也導致深度學習領域的許多學者至今仍在使用Theano。
但隨著Tensorflow在Google的支持下強勢崛起,Theano日漸式微,使用Theano的人也越來越少。這個轉變的標誌性事件是:創始者之一的Ian Goodfellow放棄Theano轉而去Google開發Tensorflow了。
儘管Theano已退出歷史舞臺,但作為Python的第一個深度學習框架,它很好地完成了自己的使命,為深度學習研究人員的早期拓荒提供了極大的幫助,同時也為之後的深度學習框架的開發奠定了基本的設計方向:以計算圖為框架的核心,採用GPU加速計算。
- 總結:對於深度學習新手,可以使用Theano來練手;但對於職業開發者,建議使用Tensorflow。
02 Tensorflow
2015年11月10日,Google宣佈推出全新的機器學習開源工具Tensorflow。Tensorflow最初是由Google機器智能研究部門的Google Brain團隊開發,基於Google 2011年開發的深度學習基礎架構DistBelief構建起來的。
導讀:近幾年,深度學習技術的大爆炸式發展,除了理論方面的突破外,還有基礎架構的突破,這些都奠定了深度學習繁榮發展的基礎。本文將對其中湧現出的幾個著名的深度學習平臺進行簡要介紹。
作者:魏溪含 塗銘 張修鵬
如需轉載請聯繫華章科技
01 Theano
Theano是在BSD許可證下發布的一個開源項目,是由LISA集團(現MILA)在加拿大魁北克的蒙特利爾大學開發的,其是以一位希臘數學家的名字命名的。
Theano是一個Python庫,可用於定義、優化和計算數學表達式,特別是多維數組(numpy.ndarray)。它的誕生是為了執行深度學習中的大規模神經網絡算法,從本質上而言,Theano可以被理解為一個數學表達式的編譯器:用符號式語言定義程序員所需的結果,並且Theano可以高效地運行於GPU或CPU中。
在過去很長一段時間內,Theano是深度學習開發與研究的行業標準。而且,由於出身學界,它最初是為學術研究而設計的,這也導致深度學習領域的許多學者至今仍在使用Theano。
但隨著Tensorflow在Google的支持下強勢崛起,Theano日漸式微,使用Theano的人也越來越少。這個轉變的標誌性事件是:創始者之一的Ian Goodfellow放棄Theano轉而去Google開發Tensorflow了。
儘管Theano已退出歷史舞臺,但作為Python的第一個深度學習框架,它很好地完成了自己的使命,為深度學習研究人員的早期拓荒提供了極大的幫助,同時也為之後的深度學習框架的開發奠定了基本的設計方向:以計算圖為框架的核心,採用GPU加速計算。
- 總結:對於深度學習新手,可以使用Theano來練手;但對於職業開發者,建議使用Tensorflow。
02 Tensorflow
2015年11月10日,Google宣佈推出全新的機器學習開源工具Tensorflow。Tensorflow最初是由Google機器智能研究部門的Google Brain團隊開發,基於Google 2011年開發的深度學習基礎架構DistBelief構建起來的。
Tensorflow是廣泛使用的實現機器學習以及其他涉及大量數學運算的算法庫之一。Google幾乎在所有應用程序中都使用Tensorflow來實現機器學習。例如,如果你使用過Google照片或Google語音搜索,那麼你就間接使用了Tensorflow模型。它們在大型Google硬件集群上工作,在感知任務方面,功能非常強大。
Tensorflow在很大程度上可以看作是Theano的後繼者,不僅因為它們有很大一批共同的開發者,而且它們還擁有相近的設計理念:它們都是基於計算圖實現自動微分系統。Tensorflow使用數據流圖進行數值計算,圖中的節點代表數學運算,圖中的邊則代表在這些節點之間傳遞的多維數組(tensor)。
Tensorflow編程接口支持Python和C++。隨著1.0版本的公佈,Java、Go、R和Haskell API的alpha版本也得到支持。此外,Tensorflow還可在Google Cloud和AWS中運行。
Tensorflow還支持Windows 7、Windows 10和Windows Server 2016。由於Tensorflow使用C++ Eigen庫,所以庫可在ARM架構上進行編譯和優化。這也就意味著用戶可以在各種服務器和移動設備上部署自己的訓練模型,而無須執行單獨的模型解碼器或者加載Python解釋器。
作為當前最流行的深度學習框架,Tensorflow獲得了極大成功,但在學習過程中讀者需要注意下面這些問題。
- 由於Tensorflow的接口一直處於快速迭代之中,並且版本之間存在不兼容的問題,因此開發和調試過程中可能會出現一些問題(許多開源代碼無法在新版的Tensorflow上運行)。
- 想要學習Tensorflow底層運行機制的讀者需要做好準備,Tensorflow在GitHub代碼倉庫的總代碼量超過100萬行,系統設計比較複雜,因此這將是一個漫長的過程。
- 代碼層面,對於同一個功能,Tensorflow提供了多種實現,這些實現良莠不齊,使用中還存在細微的區別,請讀者注意,避免入坑。另外,Tensorflow還創造了圖、會話、命名空間、PlaceHolder等諸多抽象概念,對普通用戶來說可能會難以理解。
- 總結:憑藉著Google強大的推廣能力,Tensorflow已經成為當今最為熱門的深度學習框架,雖不完美但是最流行,目前,各公司使用的框架也不統一,讀者有必要多學習幾個流行框架以作為知識儲備,Tensorflow無疑是一個不錯的選擇。
項目地址:
https://github.com/tensorflow/tensorflow
03 MXNet
MXNet是亞馬遜(Amazon)的李沐帶隊開發的深度學習框架。它擁有類似於Theano和Tensorflow的數據流圖,為多GPU架構提供了良好的配置,有著類似於Lasagne和Blocks的更高級別的模型構建塊,並且可以在你想象的任何硬件上運行(包括手機)。
導讀:近幾年,深度學習技術的大爆炸式發展,除了理論方面的突破外,還有基礎架構的突破,這些都奠定了深度學習繁榮發展的基礎。本文將對其中湧現出的幾個著名的深度學習平臺進行簡要介紹。
作者:魏溪含 塗銘 張修鵬
如需轉載請聯繫華章科技
01 Theano
Theano是在BSD許可證下發布的一個開源項目,是由LISA集團(現MILA)在加拿大魁北克的蒙特利爾大學開發的,其是以一位希臘數學家的名字命名的。
Theano是一個Python庫,可用於定義、優化和計算數學表達式,特別是多維數組(numpy.ndarray)。它的誕生是為了執行深度學習中的大規模神經網絡算法,從本質上而言,Theano可以被理解為一個數學表達式的編譯器:用符號式語言定義程序員所需的結果,並且Theano可以高效地運行於GPU或CPU中。
在過去很長一段時間內,Theano是深度學習開發與研究的行業標準。而且,由於出身學界,它最初是為學術研究而設計的,這也導致深度學習領域的許多學者至今仍在使用Theano。
但隨著Tensorflow在Google的支持下強勢崛起,Theano日漸式微,使用Theano的人也越來越少。這個轉變的標誌性事件是:創始者之一的Ian Goodfellow放棄Theano轉而去Google開發Tensorflow了。
儘管Theano已退出歷史舞臺,但作為Python的第一個深度學習框架,它很好地完成了自己的使命,為深度學習研究人員的早期拓荒提供了極大的幫助,同時也為之後的深度學習框架的開發奠定了基本的設計方向:以計算圖為框架的核心,採用GPU加速計算。
- 總結:對於深度學習新手,可以使用Theano來練手;但對於職業開發者,建議使用Tensorflow。
02 Tensorflow
2015年11月10日,Google宣佈推出全新的機器學習開源工具Tensorflow。Tensorflow最初是由Google機器智能研究部門的Google Brain團隊開發,基於Google 2011年開發的深度學習基礎架構DistBelief構建起來的。
Tensorflow是廣泛使用的實現機器學習以及其他涉及大量數學運算的算法庫之一。Google幾乎在所有應用程序中都使用Tensorflow來實現機器學習。例如,如果你使用過Google照片或Google語音搜索,那麼你就間接使用了Tensorflow模型。它們在大型Google硬件集群上工作,在感知任務方面,功能非常強大。
Tensorflow在很大程度上可以看作是Theano的後繼者,不僅因為它們有很大一批共同的開發者,而且它們還擁有相近的設計理念:它們都是基於計算圖實現自動微分系統。Tensorflow使用數據流圖進行數值計算,圖中的節點代表數學運算,圖中的邊則代表在這些節點之間傳遞的多維數組(tensor)。
Tensorflow編程接口支持Python和C++。隨著1.0版本的公佈,Java、Go、R和Haskell API的alpha版本也得到支持。此外,Tensorflow還可在Google Cloud和AWS中運行。
Tensorflow還支持Windows 7、Windows 10和Windows Server 2016。由於Tensorflow使用C++ Eigen庫,所以庫可在ARM架構上進行編譯和優化。這也就意味著用戶可以在各種服務器和移動設備上部署自己的訓練模型,而無須執行單獨的模型解碼器或者加載Python解釋器。
作為當前最流行的深度學習框架,Tensorflow獲得了極大成功,但在學習過程中讀者需要注意下面這些問題。
- 由於Tensorflow的接口一直處於快速迭代之中,並且版本之間存在不兼容的問題,因此開發和調試過程中可能會出現一些問題(許多開源代碼無法在新版的Tensorflow上運行)。
- 想要學習Tensorflow底層運行機制的讀者需要做好準備,Tensorflow在GitHub代碼倉庫的總代碼量超過100萬行,系統設計比較複雜,因此這將是一個漫長的過程。
- 代碼層面,對於同一個功能,Tensorflow提供了多種實現,這些實現良莠不齊,使用中還存在細微的區別,請讀者注意,避免入坑。另外,Tensorflow還創造了圖、會話、命名空間、PlaceHolder等諸多抽象概念,對普通用戶來說可能會難以理解。
- 總結:憑藉著Google強大的推廣能力,Tensorflow已經成為當今最為熱門的深度學習框架,雖不完美但是最流行,目前,各公司使用的框架也不統一,讀者有必要多學習幾個流行框架以作為知識儲備,Tensorflow無疑是一個不錯的選擇。
項目地址:
https://github.com/tensorflow/tensorflow
03 MXNet
MXNet是亞馬遜(Amazon)的李沐帶隊開發的深度學習框架。它擁有類似於Theano和Tensorflow的數據流圖,為多GPU架構提供了良好的配置,有著類似於Lasagne和Blocks的更高級別的模型構建塊,並且可以在你想象的任何硬件上運行(包括手機)。
對Python的支持只是其功能的冰山一角,MXNet同樣提供了對R、Julia、C++、Scala、Matlab、Golang和Java的接口。
MXNet以其超強的分佈式支持,明顯的內存、顯存優化為人所稱道。同樣的模型,MXNet往往佔用更小的內存和顯存,並且在分佈式環境下,MXNet展現出了明顯優於其他框架的擴展性能。
MXNet的缺點是推廣不給力及接口文檔不夠完善。MXNet長期處於快速迭代的過程中,其文檔卻長時間未更新,這就導致新手用戶難以掌握MXNet,老用戶則需要常常查閱源碼才能真正理解MXNet接口的用法。
- 總結:MXNet文檔比較混亂導致其不太適合新手入門,但其分佈性能強大,語言支持比較多,比較適合在雲平臺使用。
項目主頁:
https://mxnet.incubator.apache.org/
04 Keras
Keras是一個高層神經網絡API,由純Python語言編寫而成,並使用Tensorflow、Theano及CNTK作為後端。Keras為支持快速實驗而生,能夠將想法迅速轉換為結果。
導讀:近幾年,深度學習技術的大爆炸式發展,除了理論方面的突破外,還有基礎架構的突破,這些都奠定了深度學習繁榮發展的基礎。本文將對其中湧現出的幾個著名的深度學習平臺進行簡要介紹。
作者:魏溪含 塗銘 張修鵬
如需轉載請聯繫華章科技
01 Theano
Theano是在BSD許可證下發布的一個開源項目,是由LISA集團(現MILA)在加拿大魁北克的蒙特利爾大學開發的,其是以一位希臘數學家的名字命名的。
Theano是一個Python庫,可用於定義、優化和計算數學表達式,特別是多維數組(numpy.ndarray)。它的誕生是為了執行深度學習中的大規模神經網絡算法,從本質上而言,Theano可以被理解為一個數學表達式的編譯器:用符號式語言定義程序員所需的結果,並且Theano可以高效地運行於GPU或CPU中。
在過去很長一段時間內,Theano是深度學習開發與研究的行業標準。而且,由於出身學界,它最初是為學術研究而設計的,這也導致深度學習領域的許多學者至今仍在使用Theano。
但隨著Tensorflow在Google的支持下強勢崛起,Theano日漸式微,使用Theano的人也越來越少。這個轉變的標誌性事件是:創始者之一的Ian Goodfellow放棄Theano轉而去Google開發Tensorflow了。
儘管Theano已退出歷史舞臺,但作為Python的第一個深度學習框架,它很好地完成了自己的使命,為深度學習研究人員的早期拓荒提供了極大的幫助,同時也為之後的深度學習框架的開發奠定了基本的設計方向:以計算圖為框架的核心,採用GPU加速計算。
- 總結:對於深度學習新手,可以使用Theano來練手;但對於職業開發者,建議使用Tensorflow。
02 Tensorflow
2015年11月10日,Google宣佈推出全新的機器學習開源工具Tensorflow。Tensorflow最初是由Google機器智能研究部門的Google Brain團隊開發,基於Google 2011年開發的深度學習基礎架構DistBelief構建起來的。
Tensorflow是廣泛使用的實現機器學習以及其他涉及大量數學運算的算法庫之一。Google幾乎在所有應用程序中都使用Tensorflow來實現機器學習。例如,如果你使用過Google照片或Google語音搜索,那麼你就間接使用了Tensorflow模型。它們在大型Google硬件集群上工作,在感知任務方面,功能非常強大。
Tensorflow在很大程度上可以看作是Theano的後繼者,不僅因為它們有很大一批共同的開發者,而且它們還擁有相近的設計理念:它們都是基於計算圖實現自動微分系統。Tensorflow使用數據流圖進行數值計算,圖中的節點代表數學運算,圖中的邊則代表在這些節點之間傳遞的多維數組(tensor)。
Tensorflow編程接口支持Python和C++。隨著1.0版本的公佈,Java、Go、R和Haskell API的alpha版本也得到支持。此外,Tensorflow還可在Google Cloud和AWS中運行。
Tensorflow還支持Windows 7、Windows 10和Windows Server 2016。由於Tensorflow使用C++ Eigen庫,所以庫可在ARM架構上進行編譯和優化。這也就意味著用戶可以在各種服務器和移動設備上部署自己的訓練模型,而無須執行單獨的模型解碼器或者加載Python解釋器。
作為當前最流行的深度學習框架,Tensorflow獲得了極大成功,但在學習過程中讀者需要注意下面這些問題。
- 由於Tensorflow的接口一直處於快速迭代之中,並且版本之間存在不兼容的問題,因此開發和調試過程中可能會出現一些問題(許多開源代碼無法在新版的Tensorflow上運行)。
- 想要學習Tensorflow底層運行機制的讀者需要做好準備,Tensorflow在GitHub代碼倉庫的總代碼量超過100萬行,系統設計比較複雜,因此這將是一個漫長的過程。
- 代碼層面,對於同一個功能,Tensorflow提供了多種實現,這些實現良莠不齊,使用中還存在細微的區別,請讀者注意,避免入坑。另外,Tensorflow還創造了圖、會話、命名空間、PlaceHolder等諸多抽象概念,對普通用戶來說可能會難以理解。
- 總結:憑藉著Google強大的推廣能力,Tensorflow已經成為當今最為熱門的深度學習框架,雖不完美但是最流行,目前,各公司使用的框架也不統一,讀者有必要多學習幾個流行框架以作為知識儲備,Tensorflow無疑是一個不錯的選擇。
項目地址:
https://github.com/tensorflow/tensorflow
03 MXNet
MXNet是亞馬遜(Amazon)的李沐帶隊開發的深度學習框架。它擁有類似於Theano和Tensorflow的數據流圖,為多GPU架構提供了良好的配置,有著類似於Lasagne和Blocks的更高級別的模型構建塊,並且可以在你想象的任何硬件上運行(包括手機)。
對Python的支持只是其功能的冰山一角,MXNet同樣提供了對R、Julia、C++、Scala、Matlab、Golang和Java的接口。
MXNet以其超強的分佈式支持,明顯的內存、顯存優化為人所稱道。同樣的模型,MXNet往往佔用更小的內存和顯存,並且在分佈式環境下,MXNet展現出了明顯優於其他框架的擴展性能。
MXNet的缺點是推廣不給力及接口文檔不夠完善。MXNet長期處於快速迭代的過程中,其文檔卻長時間未更新,這就導致新手用戶難以掌握MXNet,老用戶則需要常常查閱源碼才能真正理解MXNet接口的用法。
- 總結:MXNet文檔比較混亂導致其不太適合新手入門,但其分佈性能強大,語言支持比較多,比較適合在雲平臺使用。
項目主頁:
https://mxnet.incubator.apache.org/
04 Keras
Keras是一個高層神經網絡API,由純Python語言編寫而成,並使用Tensorflow、Theano及CNTK作為後端。Keras為支持快速實驗而生,能夠將想法迅速轉換為結果。
Keras應該是深度學習框架之中最容易上手的一個,它提供了一致而簡潔的API,能夠極大地減少一般應用下用戶的工作量,避免用戶重複造輪子,而且Keras支持無縫CPU和GPU的相互轉換。
為了屏蔽後端的差異性,Keras做了層層封裝,導致用戶在新增操作或是獲取底層的數據信息時過於困難。同時,過度封裝也使得Keras的程序過於緩慢,許多bug都隱藏於封裝之中。
另外就是學習Keras十分容易,但是很快就會遇到瓶頸,因為它缺少靈活性。另外,在使用Keras的大多數時間裡,用戶主要是在調用接口,很難真正學習到深度學習的內容。
- 總結:Keras比較適合作為練習使用的深度學習框架,但是因為其過度的封裝導致並不適合新手學習(無法理解深度學習的真正內涵),故不推薦。
項目主頁:
https://keras.io
05 PyTorch
PyTorch是一個Python優先的深度學習框架,能夠在強大的GPU加速的基礎上實現張量和動態神經網絡。
導讀:近幾年,深度學習技術的大爆炸式發展,除了理論方面的突破外,還有基礎架構的突破,這些都奠定了深度學習繁榮發展的基礎。本文將對其中湧現出的幾個著名的深度學習平臺進行簡要介紹。
作者:魏溪含 塗銘 張修鵬
如需轉載請聯繫華章科技
01 Theano
Theano是在BSD許可證下發布的一個開源項目,是由LISA集團(現MILA)在加拿大魁北克的蒙特利爾大學開發的,其是以一位希臘數學家的名字命名的。
Theano是一個Python庫,可用於定義、優化和計算數學表達式,特別是多維數組(numpy.ndarray)。它的誕生是為了執行深度學習中的大規模神經網絡算法,從本質上而言,Theano可以被理解為一個數學表達式的編譯器:用符號式語言定義程序員所需的結果,並且Theano可以高效地運行於GPU或CPU中。
在過去很長一段時間內,Theano是深度學習開發與研究的行業標準。而且,由於出身學界,它最初是為學術研究而設計的,這也導致深度學習領域的許多學者至今仍在使用Theano。
但隨著Tensorflow在Google的支持下強勢崛起,Theano日漸式微,使用Theano的人也越來越少。這個轉變的標誌性事件是:創始者之一的Ian Goodfellow放棄Theano轉而去Google開發Tensorflow了。
儘管Theano已退出歷史舞臺,但作為Python的第一個深度學習框架,它很好地完成了自己的使命,為深度學習研究人員的早期拓荒提供了極大的幫助,同時也為之後的深度學習框架的開發奠定了基本的設計方向:以計算圖為框架的核心,採用GPU加速計算。
- 總結:對於深度學習新手,可以使用Theano來練手;但對於職業開發者,建議使用Tensorflow。
02 Tensorflow
2015年11月10日,Google宣佈推出全新的機器學習開源工具Tensorflow。Tensorflow最初是由Google機器智能研究部門的Google Brain團隊開發,基於Google 2011年開發的深度學習基礎架構DistBelief構建起來的。
Tensorflow是廣泛使用的實現機器學習以及其他涉及大量數學運算的算法庫之一。Google幾乎在所有應用程序中都使用Tensorflow來實現機器學習。例如,如果你使用過Google照片或Google語音搜索,那麼你就間接使用了Tensorflow模型。它們在大型Google硬件集群上工作,在感知任務方面,功能非常強大。
Tensorflow在很大程度上可以看作是Theano的後繼者,不僅因為它們有很大一批共同的開發者,而且它們還擁有相近的設計理念:它們都是基於計算圖實現自動微分系統。Tensorflow使用數據流圖進行數值計算,圖中的節點代表數學運算,圖中的邊則代表在這些節點之間傳遞的多維數組(tensor)。
Tensorflow編程接口支持Python和C++。隨著1.0版本的公佈,Java、Go、R和Haskell API的alpha版本也得到支持。此外,Tensorflow還可在Google Cloud和AWS中運行。
Tensorflow還支持Windows 7、Windows 10和Windows Server 2016。由於Tensorflow使用C++ Eigen庫,所以庫可在ARM架構上進行編譯和優化。這也就意味著用戶可以在各種服務器和移動設備上部署自己的訓練模型,而無須執行單獨的模型解碼器或者加載Python解釋器。
作為當前最流行的深度學習框架,Tensorflow獲得了極大成功,但在學習過程中讀者需要注意下面這些問題。
- 由於Tensorflow的接口一直處於快速迭代之中,並且版本之間存在不兼容的問題,因此開發和調試過程中可能會出現一些問題(許多開源代碼無法在新版的Tensorflow上運行)。
- 想要學習Tensorflow底層運行機制的讀者需要做好準備,Tensorflow在GitHub代碼倉庫的總代碼量超過100萬行,系統設計比較複雜,因此這將是一個漫長的過程。
- 代碼層面,對於同一個功能,Tensorflow提供了多種實現,這些實現良莠不齊,使用中還存在細微的區別,請讀者注意,避免入坑。另外,Tensorflow還創造了圖、會話、命名空間、PlaceHolder等諸多抽象概念,對普通用戶來說可能會難以理解。
- 總結:憑藉著Google強大的推廣能力,Tensorflow已經成為當今最為熱門的深度學習框架,雖不完美但是最流行,目前,各公司使用的框架也不統一,讀者有必要多學習幾個流行框架以作為知識儲備,Tensorflow無疑是一個不錯的選擇。
項目地址:
https://github.com/tensorflow/tensorflow
03 MXNet
MXNet是亞馬遜(Amazon)的李沐帶隊開發的深度學習框架。它擁有類似於Theano和Tensorflow的數據流圖,為多GPU架構提供了良好的配置,有著類似於Lasagne和Blocks的更高級別的模型構建塊,並且可以在你想象的任何硬件上運行(包括手機)。
對Python的支持只是其功能的冰山一角,MXNet同樣提供了對R、Julia、C++、Scala、Matlab、Golang和Java的接口。
MXNet以其超強的分佈式支持,明顯的內存、顯存優化為人所稱道。同樣的模型,MXNet往往佔用更小的內存和顯存,並且在分佈式環境下,MXNet展現出了明顯優於其他框架的擴展性能。
MXNet的缺點是推廣不給力及接口文檔不夠完善。MXNet長期處於快速迭代的過程中,其文檔卻長時間未更新,這就導致新手用戶難以掌握MXNet,老用戶則需要常常查閱源碼才能真正理解MXNet接口的用法。
- 總結:MXNet文檔比較混亂導致其不太適合新手入門,但其分佈性能強大,語言支持比較多,比較適合在雲平臺使用。
項目主頁:
https://mxnet.incubator.apache.org/
04 Keras
Keras是一個高層神經網絡API,由純Python語言編寫而成,並使用Tensorflow、Theano及CNTK作為後端。Keras為支持快速實驗而生,能夠將想法迅速轉換為結果。
Keras應該是深度學習框架之中最容易上手的一個,它提供了一致而簡潔的API,能夠極大地減少一般應用下用戶的工作量,避免用戶重複造輪子,而且Keras支持無縫CPU和GPU的相互轉換。
為了屏蔽後端的差異性,Keras做了層層封裝,導致用戶在新增操作或是獲取底層的數據信息時過於困難。同時,過度封裝也使得Keras的程序過於緩慢,許多bug都隱藏於封裝之中。
另外就是學習Keras十分容易,但是很快就會遇到瓶頸,因為它缺少靈活性。另外,在使用Keras的大多數時間裡,用戶主要是在調用接口,很難真正學習到深度學習的內容。
- 總結:Keras比較適合作為練習使用的深度學習框架,但是因為其過度的封裝導致並不適合新手學習(無法理解深度學習的真正內涵),故不推薦。
項目主頁:
https://keras.io
05 PyTorch
PyTorch是一個Python優先的深度學習框架,能夠在強大的GPU加速的基礎上實現張量和動態神經網絡。
PyTorch是一個Python軟件包,其提供了兩種高層面的功能,具體如下。
- 使用強大的GPU加速的Tensor計算(類似於Numpy)。
- 構建基於tape的autograd系統的深度神經網絡。
- 活躍的社區:PyTorch提供了完整的文檔,循序漸進的指南,作者親自維護論壇以供用戶交流和求教問題。Facebook人工智能研究院(FAIR)對PyTorch提供了強力支持,作為當今排名前三的深度學習研究機構,FAIR的支持足以確保PyTorch獲得持續的開發更新,而不至於像許多由個人開發的框架那樣曇花一現。
如有需要,你也可以複用你喜歡的Python軟件包(如Numpy、scipy和Cython)來擴展PyTorch。
相對於Tensorflow,PyTorch的一大優點是,它的圖是動態的,而Tensorflow等都是靜態圖,不利於擴展。同時,PyTorch非常簡潔,方便使用。
- 總結:如果說TensorFlow的設計是“Make It Complicated”,Keras的設計是“Make It Complicated And Hide It”,那麼PyTorch的設計真正做到了“Keep it Simple,Stupid”。
項目地址:
http://pytorch.org/
06 Caffe
Caffe是基於C++語言編寫的深度學習框架,作者是中國人賈揚清。它開放源碼(具有Licensed BSD),提供了命令行,以及Matlab和Python接口,清晰、可讀性強、容易上手。
導讀:近幾年,深度學習技術的大爆炸式發展,除了理論方面的突破外,還有基礎架構的突破,這些都奠定了深度學習繁榮發展的基礎。本文將對其中湧現出的幾個著名的深度學習平臺進行簡要介紹。
作者:魏溪含 塗銘 張修鵬
如需轉載請聯繫華章科技
01 Theano
Theano是在BSD許可證下發布的一個開源項目,是由LISA集團(現MILA)在加拿大魁北克的蒙特利爾大學開發的,其是以一位希臘數學家的名字命名的。
Theano是一個Python庫,可用於定義、優化和計算數學表達式,特別是多維數組(numpy.ndarray)。它的誕生是為了執行深度學習中的大規模神經網絡算法,從本質上而言,Theano可以被理解為一個數學表達式的編譯器:用符號式語言定義程序員所需的結果,並且Theano可以高效地運行於GPU或CPU中。
在過去很長一段時間內,Theano是深度學習開發與研究的行業標準。而且,由於出身學界,它最初是為學術研究而設計的,這也導致深度學習領域的許多學者至今仍在使用Theano。
但隨著Tensorflow在Google的支持下強勢崛起,Theano日漸式微,使用Theano的人也越來越少。這個轉變的標誌性事件是:創始者之一的Ian Goodfellow放棄Theano轉而去Google開發Tensorflow了。
儘管Theano已退出歷史舞臺,但作為Python的第一個深度學習框架,它很好地完成了自己的使命,為深度學習研究人員的早期拓荒提供了極大的幫助,同時也為之後的深度學習框架的開發奠定了基本的設計方向:以計算圖為框架的核心,採用GPU加速計算。
- 總結:對於深度學習新手,可以使用Theano來練手;但對於職業開發者,建議使用Tensorflow。
02 Tensorflow
2015年11月10日,Google宣佈推出全新的機器學習開源工具Tensorflow。Tensorflow最初是由Google機器智能研究部門的Google Brain團隊開發,基於Google 2011年開發的深度學習基礎架構DistBelief構建起來的。
Tensorflow是廣泛使用的實現機器學習以及其他涉及大量數學運算的算法庫之一。Google幾乎在所有應用程序中都使用Tensorflow來實現機器學習。例如,如果你使用過Google照片或Google語音搜索,那麼你就間接使用了Tensorflow模型。它們在大型Google硬件集群上工作,在感知任務方面,功能非常強大。
Tensorflow在很大程度上可以看作是Theano的後繼者,不僅因為它們有很大一批共同的開發者,而且它們還擁有相近的設計理念:它們都是基於計算圖實現自動微分系統。Tensorflow使用數據流圖進行數值計算,圖中的節點代表數學運算,圖中的邊則代表在這些節點之間傳遞的多維數組(tensor)。
Tensorflow編程接口支持Python和C++。隨著1.0版本的公佈,Java、Go、R和Haskell API的alpha版本也得到支持。此外,Tensorflow還可在Google Cloud和AWS中運行。
Tensorflow還支持Windows 7、Windows 10和Windows Server 2016。由於Tensorflow使用C++ Eigen庫,所以庫可在ARM架構上進行編譯和優化。這也就意味著用戶可以在各種服務器和移動設備上部署自己的訓練模型,而無須執行單獨的模型解碼器或者加載Python解釋器。
作為當前最流行的深度學習框架,Tensorflow獲得了極大成功,但在學習過程中讀者需要注意下面這些問題。
- 由於Tensorflow的接口一直處於快速迭代之中,並且版本之間存在不兼容的問題,因此開發和調試過程中可能會出現一些問題(許多開源代碼無法在新版的Tensorflow上運行)。
- 想要學習Tensorflow底層運行機制的讀者需要做好準備,Tensorflow在GitHub代碼倉庫的總代碼量超過100萬行,系統設計比較複雜,因此這將是一個漫長的過程。
- 代碼層面,對於同一個功能,Tensorflow提供了多種實現,這些實現良莠不齊,使用中還存在細微的區別,請讀者注意,避免入坑。另外,Tensorflow還創造了圖、會話、命名空間、PlaceHolder等諸多抽象概念,對普通用戶來說可能會難以理解。
- 總結:憑藉著Google強大的推廣能力,Tensorflow已經成為當今最為熱門的深度學習框架,雖不完美但是最流行,目前,各公司使用的框架也不統一,讀者有必要多學習幾個流行框架以作為知識儲備,Tensorflow無疑是一個不錯的選擇。
項目地址:
https://github.com/tensorflow/tensorflow
03 MXNet
MXNet是亞馬遜(Amazon)的李沐帶隊開發的深度學習框架。它擁有類似於Theano和Tensorflow的數據流圖,為多GPU架構提供了良好的配置,有著類似於Lasagne和Blocks的更高級別的模型構建塊,並且可以在你想象的任何硬件上運行(包括手機)。
對Python的支持只是其功能的冰山一角,MXNet同樣提供了對R、Julia、C++、Scala、Matlab、Golang和Java的接口。
MXNet以其超強的分佈式支持,明顯的內存、顯存優化為人所稱道。同樣的模型,MXNet往往佔用更小的內存和顯存,並且在分佈式環境下,MXNet展現出了明顯優於其他框架的擴展性能。
MXNet的缺點是推廣不給力及接口文檔不夠完善。MXNet長期處於快速迭代的過程中,其文檔卻長時間未更新,這就導致新手用戶難以掌握MXNet,老用戶則需要常常查閱源碼才能真正理解MXNet接口的用法。
- 總結:MXNet文檔比較混亂導致其不太適合新手入門,但其分佈性能強大,語言支持比較多,比較適合在雲平臺使用。
項目主頁:
https://mxnet.incubator.apache.org/
04 Keras
Keras是一個高層神經網絡API,由純Python語言編寫而成,並使用Tensorflow、Theano及CNTK作為後端。Keras為支持快速實驗而生,能夠將想法迅速轉換為結果。
Keras應該是深度學習框架之中最容易上手的一個,它提供了一致而簡潔的API,能夠極大地減少一般應用下用戶的工作量,避免用戶重複造輪子,而且Keras支持無縫CPU和GPU的相互轉換。
為了屏蔽後端的差異性,Keras做了層層封裝,導致用戶在新增操作或是獲取底層的數據信息時過於困難。同時,過度封裝也使得Keras的程序過於緩慢,許多bug都隱藏於封裝之中。
另外就是學習Keras十分容易,但是很快就會遇到瓶頸,因為它缺少靈活性。另外,在使用Keras的大多數時間裡,用戶主要是在調用接口,很難真正學習到深度學習的內容。
- 總結:Keras比較適合作為練習使用的深度學習框架,但是因為其過度的封裝導致並不適合新手學習(無法理解深度學習的真正內涵),故不推薦。
項目主頁:
https://keras.io
05 PyTorch
PyTorch是一個Python優先的深度學習框架,能夠在強大的GPU加速的基礎上實現張量和動態神經網絡。
PyTorch是一個Python軟件包,其提供了兩種高層面的功能,具體如下。
- 使用強大的GPU加速的Tensor計算(類似於Numpy)。
- 構建基於tape的autograd系統的深度神經網絡。
- 活躍的社區:PyTorch提供了完整的文檔,循序漸進的指南,作者親自維護論壇以供用戶交流和求教問題。Facebook人工智能研究院(FAIR)對PyTorch提供了強力支持,作為當今排名前三的深度學習研究機構,FAIR的支持足以確保PyTorch獲得持續的開發更新,而不至於像許多由個人開發的框架那樣曇花一現。
如有需要,你也可以複用你喜歡的Python軟件包(如Numpy、scipy和Cython)來擴展PyTorch。
相對於Tensorflow,PyTorch的一大優點是,它的圖是動態的,而Tensorflow等都是靜態圖,不利於擴展。同時,PyTorch非常簡潔,方便使用。
- 總結:如果說TensorFlow的設計是“Make It Complicated”,Keras的設計是“Make It Complicated And Hide It”,那麼PyTorch的設計真正做到了“Keep it Simple,Stupid”。
項目地址:
http://pytorch.org/
06 Caffe
Caffe是基於C++語言編寫的深度學習框架,作者是中國人賈揚清。它開放源碼(具有Licensed BSD),提供了命令行,以及Matlab和Python接口,清晰、可讀性強、容易上手。
Caffe是早期深度學習研究者使用的框架,由於很多研究人員在上面進行開發和優化,因此其現今也是流行的框架之一。Caffe也存在不支持多機、跨平臺、可擴展性差等問題。初學者使用Caffe時還需要注意下面這些問題。
- Caffe的安裝過程需要大量的依賴庫,因此會涉及很多安裝版本問題,初學者不易上手。
- 當用戶想要實現一個新的層時,需要用C++實現它的前向傳播和反向傳播代碼,而如果想要新層運行在GPU之上,則需要同時使用CUDA實現這一層的前向傳播和反向傳播。
Caffe2出自Facebook人工智能實驗室與應用機器學習團隊,但賈揚清仍是主要貢獻者之一。Caffe2在工程上做了很多優化,比如運行速度、跨平臺、可擴展性等,它可以看作是Caffe更細粒度的重構,但在設計上,其實Caffe2與TensorFlow更像。目前代碼已開源。
導讀:近幾年,深度學習技術的大爆炸式發展,除了理論方面的突破外,還有基礎架構的突破,這些都奠定了深度學習繁榮發展的基礎。本文將對其中湧現出的幾個著名的深度學習平臺進行簡要介紹。
作者:魏溪含 塗銘 張修鵬
如需轉載請聯繫華章科技
01 Theano
Theano是在BSD許可證下發布的一個開源項目,是由LISA集團(現MILA)在加拿大魁北克的蒙特利爾大學開發的,其是以一位希臘數學家的名字命名的。
Theano是一個Python庫,可用於定義、優化和計算數學表達式,特別是多維數組(numpy.ndarray)。它的誕生是為了執行深度學習中的大規模神經網絡算法,從本質上而言,Theano可以被理解為一個數學表達式的編譯器:用符號式語言定義程序員所需的結果,並且Theano可以高效地運行於GPU或CPU中。
在過去很長一段時間內,Theano是深度學習開發與研究的行業標準。而且,由於出身學界,它最初是為學術研究而設計的,這也導致深度學習領域的許多學者至今仍在使用Theano。
但隨著Tensorflow在Google的支持下強勢崛起,Theano日漸式微,使用Theano的人也越來越少。這個轉變的標誌性事件是:創始者之一的Ian Goodfellow放棄Theano轉而去Google開發Tensorflow了。
儘管Theano已退出歷史舞臺,但作為Python的第一個深度學習框架,它很好地完成了自己的使命,為深度學習研究人員的早期拓荒提供了極大的幫助,同時也為之後的深度學習框架的開發奠定了基本的設計方向:以計算圖為框架的核心,採用GPU加速計算。
- 總結:對於深度學習新手,可以使用Theano來練手;但對於職業開發者,建議使用Tensorflow。
02 Tensorflow
2015年11月10日,Google宣佈推出全新的機器學習開源工具Tensorflow。Tensorflow最初是由Google機器智能研究部門的Google Brain團隊開發,基於Google 2011年開發的深度學習基礎架構DistBelief構建起來的。
Tensorflow是廣泛使用的實現機器學習以及其他涉及大量數學運算的算法庫之一。Google幾乎在所有應用程序中都使用Tensorflow來實現機器學習。例如,如果你使用過Google照片或Google語音搜索,那麼你就間接使用了Tensorflow模型。它們在大型Google硬件集群上工作,在感知任務方面,功能非常強大。
Tensorflow在很大程度上可以看作是Theano的後繼者,不僅因為它們有很大一批共同的開發者,而且它們還擁有相近的設計理念:它們都是基於計算圖實現自動微分系統。Tensorflow使用數據流圖進行數值計算,圖中的節點代表數學運算,圖中的邊則代表在這些節點之間傳遞的多維數組(tensor)。
Tensorflow編程接口支持Python和C++。隨著1.0版本的公佈,Java、Go、R和Haskell API的alpha版本也得到支持。此外,Tensorflow還可在Google Cloud和AWS中運行。
Tensorflow還支持Windows 7、Windows 10和Windows Server 2016。由於Tensorflow使用C++ Eigen庫,所以庫可在ARM架構上進行編譯和優化。這也就意味著用戶可以在各種服務器和移動設備上部署自己的訓練模型,而無須執行單獨的模型解碼器或者加載Python解釋器。
作為當前最流行的深度學習框架,Tensorflow獲得了極大成功,但在學習過程中讀者需要注意下面這些問題。
- 由於Tensorflow的接口一直處於快速迭代之中,並且版本之間存在不兼容的問題,因此開發和調試過程中可能會出現一些問題(許多開源代碼無法在新版的Tensorflow上運行)。
- 想要學習Tensorflow底層運行機制的讀者需要做好準備,Tensorflow在GitHub代碼倉庫的總代碼量超過100萬行,系統設計比較複雜,因此這將是一個漫長的過程。
- 代碼層面,對於同一個功能,Tensorflow提供了多種實現,這些實現良莠不齊,使用中還存在細微的區別,請讀者注意,避免入坑。另外,Tensorflow還創造了圖、會話、命名空間、PlaceHolder等諸多抽象概念,對普通用戶來說可能會難以理解。
- 總結:憑藉著Google強大的推廣能力,Tensorflow已經成為當今最為熱門的深度學習框架,雖不完美但是最流行,目前,各公司使用的框架也不統一,讀者有必要多學習幾個流行框架以作為知識儲備,Tensorflow無疑是一個不錯的選擇。
項目地址:
https://github.com/tensorflow/tensorflow
03 MXNet
MXNet是亞馬遜(Amazon)的李沐帶隊開發的深度學習框架。它擁有類似於Theano和Tensorflow的數據流圖,為多GPU架構提供了良好的配置,有著類似於Lasagne和Blocks的更高級別的模型構建塊,並且可以在你想象的任何硬件上運行(包括手機)。
對Python的支持只是其功能的冰山一角,MXNet同樣提供了對R、Julia、C++、Scala、Matlab、Golang和Java的接口。
MXNet以其超強的分佈式支持,明顯的內存、顯存優化為人所稱道。同樣的模型,MXNet往往佔用更小的內存和顯存,並且在分佈式環境下,MXNet展現出了明顯優於其他框架的擴展性能。
MXNet的缺點是推廣不給力及接口文檔不夠完善。MXNet長期處於快速迭代的過程中,其文檔卻長時間未更新,這就導致新手用戶難以掌握MXNet,老用戶則需要常常查閱源碼才能真正理解MXNet接口的用法。
- 總結:MXNet文檔比較混亂導致其不太適合新手入門,但其分佈性能強大,語言支持比較多,比較適合在雲平臺使用。
項目主頁:
https://mxnet.incubator.apache.org/
04 Keras
Keras是一個高層神經網絡API,由純Python語言編寫而成,並使用Tensorflow、Theano及CNTK作為後端。Keras為支持快速實驗而生,能夠將想法迅速轉換為結果。
Keras應該是深度學習框架之中最容易上手的一個,它提供了一致而簡潔的API,能夠極大地減少一般應用下用戶的工作量,避免用戶重複造輪子,而且Keras支持無縫CPU和GPU的相互轉換。
為了屏蔽後端的差異性,Keras做了層層封裝,導致用戶在新增操作或是獲取底層的數據信息時過於困難。同時,過度封裝也使得Keras的程序過於緩慢,許多bug都隱藏於封裝之中。
另外就是學習Keras十分容易,但是很快就會遇到瓶頸,因為它缺少靈活性。另外,在使用Keras的大多數時間裡,用戶主要是在調用接口,很難真正學習到深度學習的內容。
- 總結:Keras比較適合作為練習使用的深度學習框架,但是因為其過度的封裝導致並不適合新手學習(無法理解深度學習的真正內涵),故不推薦。
項目主頁:
https://keras.io
05 PyTorch
PyTorch是一個Python優先的深度學習框架,能夠在強大的GPU加速的基礎上實現張量和動態神經網絡。
PyTorch是一個Python軟件包,其提供了兩種高層面的功能,具體如下。
- 使用強大的GPU加速的Tensor計算(類似於Numpy)。
- 構建基於tape的autograd系統的深度神經網絡。
- 活躍的社區:PyTorch提供了完整的文檔,循序漸進的指南,作者親自維護論壇以供用戶交流和求教問題。Facebook人工智能研究院(FAIR)對PyTorch提供了強力支持,作為當今排名前三的深度學習研究機構,FAIR的支持足以確保PyTorch獲得持續的開發更新,而不至於像許多由個人開發的框架那樣曇花一現。
如有需要,你也可以複用你喜歡的Python軟件包(如Numpy、scipy和Cython)來擴展PyTorch。
相對於Tensorflow,PyTorch的一大優點是,它的圖是動態的,而Tensorflow等都是靜態圖,不利於擴展。同時,PyTorch非常簡潔,方便使用。
- 總結:如果說TensorFlow的設計是“Make It Complicated”,Keras的設計是“Make It Complicated And Hide It”,那麼PyTorch的設計真正做到了“Keep it Simple,Stupid”。
項目地址:
http://pytorch.org/
06 Caffe
Caffe是基於C++語言編寫的深度學習框架,作者是中國人賈揚清。它開放源碼(具有Licensed BSD),提供了命令行,以及Matlab和Python接口,清晰、可讀性強、容易上手。
Caffe是早期深度學習研究者使用的框架,由於很多研究人員在上面進行開發和優化,因此其現今也是流行的框架之一。Caffe也存在不支持多機、跨平臺、可擴展性差等問題。初學者使用Caffe時還需要注意下面這些問題。
- Caffe的安裝過程需要大量的依賴庫,因此會涉及很多安裝版本問題,初學者不易上手。
- 當用戶想要實現一個新的層時,需要用C++實現它的前向傳播和反向傳播代碼,而如果想要新層運行在GPU之上,則需要同時使用CUDA實現這一層的前向傳播和反向傳播。
Caffe2出自Facebook人工智能實驗室與應用機器學習團隊,但賈揚清仍是主要貢獻者之一。Caffe2在工程上做了很多優化,比如運行速度、跨平臺、可擴展性等,它可以看作是Caffe更細粒度的重構,但在設計上,其實Caffe2與TensorFlow更像。目前代碼已開源。
- 總結:至今工業界和學界仍有很多人在使用Caffe,而Caffe2的出現為我們提供了更多的選擇。
項目地址:
Caffe:http://caffe.berkeleyvision.org/
Caffe2:https://caffe2.ai/
關於作者:魏溪含 ,愛丁堡大學人工智能碩士,阿里巴巴達摩院算法專家,在計算機視覺、大數據領域有8年以上的算法架構和研發經驗。
塗銘,阿里巴巴數據架構師,對大數據、自然語言處理、圖像識別、Python、Java相關技術有深入的研究,積累了豐富的實踐經驗。
張修鵬,畢業於中南大學,阿里巴巴技術發展專家,長期從事雲計算、大數據、人工智能與物聯網技術的商業化應用,在阿里巴巴首次將圖像識別技術引入工業,並推動圖像識別產品化、平臺化。
本文摘編自《深度學習與圖像識別:原理與實踐》,經出版方授權發佈。
導讀:近幾年,深度學習技術的大爆炸式發展,除了理論方面的突破外,還有基礎架構的突破,這些都奠定了深度學習繁榮發展的基礎。本文將對其中湧現出的幾個著名的深度學習平臺進行簡要介紹。
作者:魏溪含 塗銘 張修鵬
如需轉載請聯繫華章科技
01 Theano
Theano是在BSD許可證下發布的一個開源項目,是由LISA集團(現MILA)在加拿大魁北克的蒙特利爾大學開發的,其是以一位希臘數學家的名字命名的。
Theano是一個Python庫,可用於定義、優化和計算數學表達式,特別是多維數組(numpy.ndarray)。它的誕生是為了執行深度學習中的大規模神經網絡算法,從本質上而言,Theano可以被理解為一個數學表達式的編譯器:用符號式語言定義程序員所需的結果,並且Theano可以高效地運行於GPU或CPU中。
在過去很長一段時間內,Theano是深度學習開發與研究的行業標準。而且,由於出身學界,它最初是為學術研究而設計的,這也導致深度學習領域的許多學者至今仍在使用Theano。
但隨著Tensorflow在Google的支持下強勢崛起,Theano日漸式微,使用Theano的人也越來越少。這個轉變的標誌性事件是:創始者之一的Ian Goodfellow放棄Theano轉而去Google開發Tensorflow了。
儘管Theano已退出歷史舞臺,但作為Python的第一個深度學習框架,它很好地完成了自己的使命,為深度學習研究人員的早期拓荒提供了極大的幫助,同時也為之後的深度學習框架的開發奠定了基本的設計方向:以計算圖為框架的核心,採用GPU加速計算。
- 總結:對於深度學習新手,可以使用Theano來練手;但對於職業開發者,建議使用Tensorflow。
02 Tensorflow
2015年11月10日,Google宣佈推出全新的機器學習開源工具Tensorflow。Tensorflow最初是由Google機器智能研究部門的Google Brain團隊開發,基於Google 2011年開發的深度學習基礎架構DistBelief構建起來的。
Tensorflow是廣泛使用的實現機器學習以及其他涉及大量數學運算的算法庫之一。Google幾乎在所有應用程序中都使用Tensorflow來實現機器學習。例如,如果你使用過Google照片或Google語音搜索,那麼你就間接使用了Tensorflow模型。它們在大型Google硬件集群上工作,在感知任務方面,功能非常強大。
Tensorflow在很大程度上可以看作是Theano的後繼者,不僅因為它們有很大一批共同的開發者,而且它們還擁有相近的設計理念:它們都是基於計算圖實現自動微分系統。Tensorflow使用數據流圖進行數值計算,圖中的節點代表數學運算,圖中的邊則代表在這些節點之間傳遞的多維數組(tensor)。
Tensorflow編程接口支持Python和C++。隨著1.0版本的公佈,Java、Go、R和Haskell API的alpha版本也得到支持。此外,Tensorflow還可在Google Cloud和AWS中運行。
Tensorflow還支持Windows 7、Windows 10和Windows Server 2016。由於Tensorflow使用C++ Eigen庫,所以庫可在ARM架構上進行編譯和優化。這也就意味著用戶可以在各種服務器和移動設備上部署自己的訓練模型,而無須執行單獨的模型解碼器或者加載Python解釋器。
作為當前最流行的深度學習框架,Tensorflow獲得了極大成功,但在學習過程中讀者需要注意下面這些問題。
- 由於Tensorflow的接口一直處於快速迭代之中,並且版本之間存在不兼容的問題,因此開發和調試過程中可能會出現一些問題(許多開源代碼無法在新版的Tensorflow上運行)。
- 想要學習Tensorflow底層運行機制的讀者需要做好準備,Tensorflow在GitHub代碼倉庫的總代碼量超過100萬行,系統設計比較複雜,因此這將是一個漫長的過程。
- 代碼層面,對於同一個功能,Tensorflow提供了多種實現,這些實現良莠不齊,使用中還存在細微的區別,請讀者注意,避免入坑。另外,Tensorflow還創造了圖、會話、命名空間、PlaceHolder等諸多抽象概念,對普通用戶來說可能會難以理解。
- 總結:憑藉著Google強大的推廣能力,Tensorflow已經成為當今最為熱門的深度學習框架,雖不完美但是最流行,目前,各公司使用的框架也不統一,讀者有必要多學習幾個流行框架以作為知識儲備,Tensorflow無疑是一個不錯的選擇。
項目地址:
https://github.com/tensorflow/tensorflow
03 MXNet
MXNet是亞馬遜(Amazon)的李沐帶隊開發的深度學習框架。它擁有類似於Theano和Tensorflow的數據流圖,為多GPU架構提供了良好的配置,有著類似於Lasagne和Blocks的更高級別的模型構建塊,並且可以在你想象的任何硬件上運行(包括手機)。
對Python的支持只是其功能的冰山一角,MXNet同樣提供了對R、Julia、C++、Scala、Matlab、Golang和Java的接口。
MXNet以其超強的分佈式支持,明顯的內存、顯存優化為人所稱道。同樣的模型,MXNet往往佔用更小的內存和顯存,並且在分佈式環境下,MXNet展現出了明顯優於其他框架的擴展性能。
MXNet的缺點是推廣不給力及接口文檔不夠完善。MXNet長期處於快速迭代的過程中,其文檔卻長時間未更新,這就導致新手用戶難以掌握MXNet,老用戶則需要常常查閱源碼才能真正理解MXNet接口的用法。
- 總結:MXNet文檔比較混亂導致其不太適合新手入門,但其分佈性能強大,語言支持比較多,比較適合在雲平臺使用。
項目主頁:
https://mxnet.incubator.apache.org/
04 Keras
Keras是一個高層神經網絡API,由純Python語言編寫而成,並使用Tensorflow、Theano及CNTK作為後端。Keras為支持快速實驗而生,能夠將想法迅速轉換為結果。
Keras應該是深度學習框架之中最容易上手的一個,它提供了一致而簡潔的API,能夠極大地減少一般應用下用戶的工作量,避免用戶重複造輪子,而且Keras支持無縫CPU和GPU的相互轉換。
為了屏蔽後端的差異性,Keras做了層層封裝,導致用戶在新增操作或是獲取底層的數據信息時過於困難。同時,過度封裝也使得Keras的程序過於緩慢,許多bug都隱藏於封裝之中。
另外就是學習Keras十分容易,但是很快就會遇到瓶頸,因為它缺少靈活性。另外,在使用Keras的大多數時間裡,用戶主要是在調用接口,很難真正學習到深度學習的內容。
- 總結:Keras比較適合作為練習使用的深度學習框架,但是因為其過度的封裝導致並不適合新手學習(無法理解深度學習的真正內涵),故不推薦。
項目主頁:
https://keras.io
05 PyTorch
PyTorch是一個Python優先的深度學習框架,能夠在強大的GPU加速的基礎上實現張量和動態神經網絡。
PyTorch是一個Python軟件包,其提供了兩種高層面的功能,具體如下。
- 使用強大的GPU加速的Tensor計算(類似於Numpy)。
- 構建基於tape的autograd系統的深度神經網絡。
- 活躍的社區:PyTorch提供了完整的文檔,循序漸進的指南,作者親自維護論壇以供用戶交流和求教問題。Facebook人工智能研究院(FAIR)對PyTorch提供了強力支持,作為當今排名前三的深度學習研究機構,FAIR的支持足以確保PyTorch獲得持續的開發更新,而不至於像許多由個人開發的框架那樣曇花一現。
如有需要,你也可以複用你喜歡的Python軟件包(如Numpy、scipy和Cython)來擴展PyTorch。
相對於Tensorflow,PyTorch的一大優點是,它的圖是動態的,而Tensorflow等都是靜態圖,不利於擴展。同時,PyTorch非常簡潔,方便使用。
- 總結:如果說TensorFlow的設計是“Make It Complicated”,Keras的設計是“Make It Complicated And Hide It”,那麼PyTorch的設計真正做到了“Keep it Simple,Stupid”。
項目地址:
http://pytorch.org/
06 Caffe
Caffe是基於C++語言編寫的深度學習框架,作者是中國人賈揚清。它開放源碼(具有Licensed BSD),提供了命令行,以及Matlab和Python接口,清晰、可讀性強、容易上手。
Caffe是早期深度學習研究者使用的框架,由於很多研究人員在上面進行開發和優化,因此其現今也是流行的框架之一。Caffe也存在不支持多機、跨平臺、可擴展性差等問題。初學者使用Caffe時還需要注意下面這些問題。
- Caffe的安裝過程需要大量的依賴庫,因此會涉及很多安裝版本問題,初學者不易上手。
- 當用戶想要實現一個新的層時,需要用C++實現它的前向傳播和反向傳播代碼,而如果想要新層運行在GPU之上,則需要同時使用CUDA實現這一層的前向傳播和反向傳播。
Caffe2出自Facebook人工智能實驗室與應用機器學習團隊,但賈揚清仍是主要貢獻者之一。Caffe2在工程上做了很多優化,比如運行速度、跨平臺、可擴展性等,它可以看作是Caffe更細粒度的重構,但在設計上,其實Caffe2與TensorFlow更像。目前代碼已開源。
- 總結:至今工業界和學界仍有很多人在使用Caffe,而Caffe2的出現為我們提供了更多的選擇。
項目地址:
Caffe:http://caffe.berkeleyvision.org/
Caffe2:https://caffe2.ai/
關於作者:魏溪含 ,愛丁堡大學人工智能碩士,阿里巴巴達摩院算法專家,在計算機視覺、大數據領域有8年以上的算法架構和研發經驗。
塗銘,阿里巴巴數據架構師,對大數據、自然語言處理、圖像識別、Python、Java相關技術有深入的研究,積累了豐富的實踐經驗。
張修鵬,畢業於中南大學,阿里巴巴技術發展專家,長期從事雲計算、大數據、人工智能與物聯網技術的商業化應用,在阿里巴巴首次將圖像識別技術引入工業,並推動圖像識別產品化、平臺化。
本文摘編自《深度學習與圖像識別:原理與實踐》,經出版方授權發佈。
推薦語:阿里巴巴達摩院算法專家、阿里巴巴技術發展專家、阿里巴巴數據架構師聯合撰寫,從技術原理、算法和工程實踐3個維度系統展開,既適合零基礎讀者快速入門,又適合有基礎讀者理解其核心技術;寫作方式上避開了艱澀的數學公式及其推導,深入淺出。