眼下暖侨,AI 已經成為越來越火的一個方向,程序員對于新技術是最敏感的一個人群亲澡,作為一名程序員如何轉向人工智能方向?
本文將向您介紹一些在人工智能(AI)領域常被使用的優(yōu)質軟件庫肢础,并且分析它們的優(yōu)/劣勢和自身特點掸宛。
雖然 AI 曾經被稱為只有書呆子和天才才去觸碰的專業(yè)領域,但是現(xiàn)如今由于各種軟件庫和框架的發(fā)展,它已成為一個更加開放的 IT 領域矮固,很多人都已投身于其中刑桑。
現(xiàn)在就讓我們來深入了解和探索這個紛繁的 AI 庫的世界吧!
TensorFlow
“通過使用數(shù)據流圖的計算氯质,來實現(xiàn)可擴展的機器學習”,語言:C++ 或 Python祠斧。
當提到 AI 的時候闻察,您首先聽到的框架應該就是谷歌的 TensorFlow。
TensorFlow 是使用數(shù)據流圖來執(zhí)行數(shù)值計算的開源庫琢锋。該框架的特點是它可以利用任何 CPU 或 GPU 進行計算辕漂,無論是臺式機、服務器吴超、甚至是移動設備的架構都可以實現(xiàn)钉嘹。這個框架中提供了 Python 語言的編程環(huán)境。
TensorFlow 通過所謂的各種節(jié)點來分類數(shù)據層烛芬,并對它所獲得的任何信息做出判定隧期。
想了解更多相關信息,可以參看:https://www.tensorflow.org/
優(yōu)勢:
- 使用一種簡單易學的語言--Python赘娄。
- 采用計算圖形的抽象仆潮。
- 由 TensorBoard 提供可視化。
劣勢:
- 由于 Python 并非是最快的語言遣臼,因此該軟件庫運行起來并不快性置。
- 缺乏各種預先訓練好(pre-trained)的模型。
- 并非完全開源揍堰。
微軟 CNTK
“一個開源的深度學習工具包”鹏浅,語言:C++。
我們可以稱之為微軟對于谷歌 TensorFlow 的“回應”屏歹。
微軟的計算網絡工具包(Microsoft's Computational Network ToolKit隐砸,CNTK)是一種能夠提高模塊化和分離式計算網絡的軟件庫,它還提供了各種學習算法和模型的描述蝙眶。
在需要有大量服務器參與運行的時候季希,CNTK 可以利用多臺服務器來同步實現(xiàn)褪那。雖然據說它在功能上將會對谷歌 TensorFlow 有所屏蔽,但現(xiàn)在看來還為時過早式塌。
想了解更多相關信息博敬,可以參看:https://github.com/Microsoft/CNTK
優(yōu)勢:
- 非常靈活。
- 可實現(xiàn)分布式的訓練峰尝。
- 支持 C++偏窝,C#,Java 和 Python武学。
劣勢:
它是由一種新的語言--網絡描述語言(NetworkDescription Language祭往,NDL)來實現(xiàn)。
可視化不足火窒。
Theano
“一種數(shù)值計算的軟件庫”链沼,語言:Python。
Theano 是 TensorFlow 的強有力競爭者沛鸵。它是一個功能強大的 Python 庫,能夠高效地實現(xiàn)與各種多維數(shù)組有關的數(shù)值運算缆八。
該軟件庫能夠準確地使用 GPU 來執(zhí)行各種數(shù)據密集型的計算曲掰,而不會在運行中給 CPU 增加負擔。
出于這個原因奈辰,在近十年來栏妖,Theano 一直被運用于供電系統(tǒng)內部各種大規(guī)模的計算密集型操作。
不過在 2017 年 9 月奖恰,Theano 宣布將在 2017 年 11 月的最后一次重要發(fā)布之后吊趾,對其 1.0 版本停止更新。
當然瑟啃,這并不意味著它在功能上會有所遜色论泛,只要您愿意,對它隨時展開研究都是值得的蛹屿。
想了解更多相關信息屁奏,可以參看:https://github.com/Theano/Theano
優(yōu)勢:
- 對 CPU 和 GPU 的使用進行了適當?shù)膬?yōu)化。
- 高效的數(shù)字任務處理能力错负。
劣勢:
- 原生的 Theano 相對于其他軟件庫的水平較低坟瓢,需要與其他軟件庫一起使用,以獲得較高的抽象水平犹撒。
- 在 AWS 上運行時會有一些 Bug折联。
Caffe
“深度學習的開放式框架,且速度快”识颊,語言:C++诚镰。
Caffe 是一個功能強大的深度學習框架。和上述列表中的其他框架相比,它能夠實現(xiàn)快速和有效的深度學習式研究怕享。
通過Caffe执赡,您可以非常容易地為圖像分類,建立卷積神經網絡(convolutional neural network函筋,CNN)沙合。Caffe 能夠有效地工作在 GPU 上,并且在運行過程中能夠發(fā)揮極快的速度跌帐。
想了解更多相關信息首懈,可以參看:http://caffe.berkeleyvision.org/
Caffe 的主要類包括:
優(yōu)勢:
- 可與 Python 和 MATLAB 綁定。
- 運行性能極佳谨敛。
- 無需編寫代碼究履,便可實現(xiàn)對各個模型的訓練。
劣勢:
- 對復發(fā)性的網絡(recurrent networks)支持不佳脸狸。
- 與新架構的協(xié)同性不好最仑。
Keras
“為人類的深度學習而打造”,語言:Python炊甲。
Keras 是一個用 Python 編寫的開源神經網絡庫泥彤。不像 TensorFlow、CNTK 和 Theano卿啡,Keras 并不服務于端到端的機器學習框架吟吝。
相反地,作為一個接口颈娜,它提供了一個高層次的抽象剑逃,這使得無論是在什么樣的框架下,神經網絡都能夠方便地進行配置官辽。
目前谷歌 TensorFlow 能夠將 Keras 作為后端予以支持蛹磺,而微軟的 CNTK 是否會在將來支持 Keras,則暫無時間表同仆。
想了解更多相關信息称开,可以參看:https://keras.io/
優(yōu)勢:
- 用戶友好且容易上手。
- 容易擴展乓梨。
- 無縫運行在 CPU 和 GPU 上鳖轰。
- 能與 Theano 和 TensorFlow 無縫協(xié)作。
劣勢:
- 無法作為一個獨立的框架被使用扶镀。
Torch(火炬)
“一個開源的機器學習庫”蕴侣,語言:C。
Torch 是一個為科研和數(shù)值運算打造的臭觉、開源的機器學習庫昆雀。它基于的是 Lua 編程語言辱志,而非 Python 庫。通過提供大量的算法狞膘,它不但使得深度學習研究更為容易揩懒,而且能提高效率和速度。
Torch 具有強大的 N 維陣列挽封,這對于諸如切片和索引等操作是非常有用的已球。它還提供了線性代數(shù)的程序和神經網絡的模型。
想了解更多相關信息辅愿,可以參看:
http://torch.ch/
優(yōu)勢:
- 非常靈活智亮。
- 有極高的速度和效率。
- 具有大量的預先訓練好的模型点待。
劣勢:
- 文檔不清阔蛉。
- 缺少即插即用的代碼。
- 基于的是一種不那么流行的語言--Lua癞埠。
Accord.NET
“支持機器學習状原、計算機視覺、統(tǒng)計苗踪、以及使用.NET的科學計算”遭笋,語言:C#。
這是為C#程序員準備的軟件庫徒探,Accord.NET 是一種 .NET 的機器學習框架,它方便了音頻和圖像的各種處理喂窟。
該框架可以有效地處理數(shù)值優(yōu)化测暗、人工神經網絡、甚至可視化等方面磨澡。除此之外碗啄,Accord.NET 在計算機視覺和信號處理上也具有強大的功能,而且通過一些簡單的算法就能實現(xiàn)稳摄。
想了解更多相關信息稚字,可以參看:http://accord-framework.net/
優(yōu)勢:
- 它擁有一個龐大且活躍的開發(fā)團隊。
- 具有非常好的文檔框架厦酬。
- 可實現(xiàn)質量可視化胆描。
劣勢:
- 該框架并不是非常流行。
- 比 TensorFlow 要運行得緩慢一些仗阅。
Spark MLlib
“一個可擴展的機器學習庫”昌讲,語言:Scala。
Apache 的 Spark MLlib 是一個極具擴展性的機器學習庫减噪。它支持的編程語言有 Java短绸、Scala车吹、Python、甚至是 R 語言醋闭。
它能夠非常有效地通過 Python 和 R 語言的 Numpy 庫(譯者注:NumPy 系統(tǒng)是 Python 的一種開源的數(shù)值計算擴展)進行交互操作窄驹。
MLlib 能夠很容易地被植入到 Hadoop 的工作流中。它還能提供諸如分類证逻、回歸乐埠、歸并等機器學習的算法。在涉及到大規(guī)模數(shù)據處理時瑟曲,這款功能強大的軟件庫運行起來非骋粒快。
想了解更多相關信息洞拨,可以參看:https://spark.apache.org/mllib/
優(yōu)勢:
- 能極快速地處理大規(guī)模的數(shù)據扯罐。
- 支持多種語言。
劣勢:
- 學習曲線“陡峭”(即不易學習)烦衣。
- 只能對 Hadoop 實現(xiàn)即插即用歹河。
Sci-kitLearn
“使用 Python 進行機器學習”,語言:Python花吟。
SCI-Kit 是一款主要用于在機器學習中構建各類模型的秸歧、非常強大的 Python 庫。
通過使用諸如 Numpy衅澈、SciPy 和 Matplotlib 之類的庫键菱,它對于諸如分類、回歸今布、歸并等統(tǒng)計模型非常有效经备。SCI-Kit 還能為您帶來監(jiān)管式與無監(jiān)管式的學習算法、以及交叉驗證等功能部默。
想了解更多相關信息侵蒙,可以參看:http://scikit-learn.org/
優(yōu)勢:
- 能支持許多主流的算法。
- 提供有效的數(shù)據挖掘傅蹂。
劣勢:
- 對于構建模型來說并非是最好的纷闺。
- 使用 GPU 時,效果并非最佳份蝴。
MLPack
“一個可擴展的 C++ 類型機器學習庫”犁功,語言:C++。
MLPack 是一款利用 C++ 來實現(xiàn)可擴展機器學習的軟件庫婚夫。由于它運行在 C++ 中波桩,因此您完全可以想象到它對內存的高效管理。
由于在庫中自帶優(yōu)質的機器學習算法请敦,MLPack 運行起來速度極快镐躲。另外储玫,該軟件庫對于新手來說十分“友好”,它提供了一個簡單的 API萤皂。
想了解更多相關信息撒穷,可以參看:http://mlpack.org/
優(yōu)勢:
- 擴展性極強。
- 提供 Python 和 C++ 的綁定裆熙。
劣勢:
- 沒有優(yōu)質的文檔端礼。
總結
本文在此所討論到的各種軟件庫都是在大家長期使用之后,備受好評且高質量的入录。
像 Facebook蛤奥、谷歌、雅虎僚稿、蘋果和微軟這樣的大公司已經將它們運用到了各自的深度學習和機器學習的項目中凡桥。您還有什么理由不去試試呢?
開發(fā)者 AI