如果你想進入人工智能這一領(lǐng)域互站,你應(yīng)該首先學(xué)習(xí)Python。
盡管人工智能領(lǐng)域還支持其它很多語言僵缺,但 Python 是應(yīng)用范圍最廣而且最簡單的一個胡桃。但是為什么要選擇 Python 呢——畢竟 Python 速度這么慢?因為大多數(shù)的庫都使用的是符號式語言(symbolic language)方法而非命令式語言(imperative language)方法磕潮。解釋一下也就是說:不是一條接一條地執(zhí)行你的指令翠胰,而是根據(jù)你給出的所有指令創(chuàng)建一個計算圖(computing graph)容贝。這個圖被內(nèi)部優(yōu)化和編譯成可執(zhí)行的 C++ 代碼。這樣你就能同時利用上兩個世界的最優(yōu)之處:Python 帶來的開發(fā)速度和 C++ 帶來的執(zhí)行速度之景。
我常聽到人們談?wù)撋疃葘W(xué)習(xí)和人工智能——我該從哪里開始呢斤富?TensorFlow 是現(xiàn)在最流行的吧?我聽說 Caffe 很常用锻狗,但會不會太難了茂缚?在 BEEVA Labs,我們常常需要應(yīng)對許多不同的深度學(xué)習(xí)庫屋谭,所以我希望能夠?qū)⑽覀兊陌l(fā)現(xiàn)和感想分享出來脚囊,幫助那些剛剛進入深度學(xué)習(xí)和人工智能領(lǐng)域的人。
首先說幾個常用的深度學(xué)習(xí)語言桐磁。
TensorFlow
TensorFlow 是一個使用數(shù)據(jù)流圖(data flow graphs)進行數(shù)值計算的開源軟件庫悔耘。TensorFlow是Google Brain的第二代機器學(xué)習(xí)系統(tǒng),已經(jīng)開源我擂。TensorFlow在很多地方可以應(yīng)用衬以,如語音識別,自然語言理解校摩,計算機視覺看峻,廣告等等。TensorFlow是一個非常靈活的框架衙吩,它能夠運行在個人電腦或者服務(wù)器的單個或多個CPU和GPU上互妓,甚至是移動設(shè)備上。
TensorFlow 支持 Python 和 C++坤塞,也允許在 CPU 和 GPU 上的計算分布冯勉,甚至支持使用 gRPC 進行水平擴展。
Caffe
Caffe 不只是最老牌的框架之一摹芙,而是老牌中的老牌灼狰。起初的時候它并不是一個通用框架,而僅僅關(guān)注計算機視覺浮禾,但它具有非常好的通用性交胚。在我們實驗室的實驗中,CaffeNet 架構(gòu)的訓(xùn)練時間在 Caffe 中比在 Keras 中(使用了 Theano 后端)少 5 倍盈电。Caffe 的缺點是它不夠靈活蝴簇。如果你想給它來一點新改變,那你就需要使用 C++ 和 CUDA 編程挣轨,不過你也可以使用 Python 或 Matlab 接口進行一些小改變军熏。
Caffe 的文檔非常貧乏。你需要花大量時間檢查代碼才能理解它(Xavier 初始化有什么用卷扮?Glorot 是什么荡澎?)均践。Caffe 的最大缺點之一是它的安裝。它需要解決大量的依賴包……
MXNet
mxnet 是一個支持大多數(shù)編程語言的框架之一摩幔,包括 Python彤委,R,C++或衡,Julia 等焦影。但我覺得使用 R 語言的開發(fā)者會特別偏愛 mxnet,因為至今為止還是 Python 以不可置疑的態(tài)勢稱霸深度學(xué)習(xí)語言的封断。我對多 GPU 的擴展能力有點疑慮并且我很原意去了解這樣實驗的更多細節(jié)斯辰,但目前我還是對 mxnet 持懷疑態(tài)度。
那么坡疼,python為什么適合人工智能彬呻?
谷歌的TensorFlow基本上所有的代碼都是C++和Python,其他語言一般只有幾千行 柄瑰。如果講運行速度的部分闸氮,用C++,如果講開發(fā)效率教沾,用Python蒲跨,誰會用Java這種高不成低不就的語言搞人工智能呢?Python雖然是腳本語言授翻,但是因為容易學(xué)或悲,迅速成為科學(xué)家的工具(MATLAB也能搞科學(xué)計算,但是軟件要錢藏姐,且很貴)隆箩,從而積累了大量的工具庫、架構(gòu)羔杨,人工智能涉及大量的數(shù)據(jù)計算,用Python是很自然的杨蛋,簡單高效《挡模現(xiàn)在大部分深度學(xué)習(xí)框架都支持Python,不用Python用誰逞力?Python有非常多優(yōu)秀的深度學(xué)習(xí)庫可用曙寡,人生苦短,就用Python寇荧。
如何讓自己使用Python開發(fā)的機器學(xué)習(xí)模型快捷低成本的跑起來举庶,深度兼容TensorFlow?你可以學(xué)習(xí)下谷歌的AIY Projects 項目揩抡。它也正在通過“AIY項目”這樣的計劃來促進開發(fā)人員和DIY社區(qū)對人工智能的興趣户侥,這些計劃本身代表了人工智能镀琉。谷歌的目標(biāo)是讓AI實現(xiàn)真正的平民化,讓人工智能無處不在蕊唐,人人都可以學(xué)習(xí)屋摔。