如果你想進入人工智慧這一領域,你應該首先學習Python。
儘管人工智慧領域還支持其他很多語言,但 Python 是應用範圍最廣而且最簡單的一個。但是為什麼要選擇 Python 呢——畢竟 Python 速度這麼慢?因為大多數的庫都使用的是符號式語言(symbolic language)方法而非命令式語言(imperative language)方法。解釋一下也就是說:不是一條接一條地執行你的指令,而是根據你給出的所有指令創建一個計算圖(computing graph)。這個圖被內部優化和編譯成可執行的 C++ 代碼。這樣你就能同時利用上兩個世界的最優之處:Python 帶來的開發速度和 C++ 帶來的執行速度。
我經常聽到人們談論深度學習和人工智慧——我該從哪里開始呢?TensorFlow 是現在最流行的吧?我聽說 Caffe 很常用,但會不會太難了?在 BEEVA Labs,我們常常需要應對許多不同的深度學習庫,所以我希望能夠將我們的發現和感想分享出來,幫助那些剛剛進入深度學習和人工智慧領域的人。
首先說幾個常用的深度學習語言。
TensorFlow
TensorFlow 是一個使用數據流圖(data flow graphs)進行數值計算的開源軟體庫。TensorFlow是Google Brain的第二代機器學習系統,已經開源。TensorFlow在很多地方可以應用,如語音識別,自然語言理解,電腦視覺,廣告等等。TensorFlow是一個非常靈活的框架,它能夠運行在個人電腦或者伺服器的單個或多個CPU和GPU上,甚至是移動設備上。
TensorFlow 支持 Python 和 C++,也允許在 CPU 和 GPU 上的計算分佈,甚至支持使用 gRPC 進行水準擴展。
Caffe
Caffe 不只是最老牌的框架之一,而是老牌中的老牌。起初的時候它並不是一個通用框架,而僅僅關注電腦視覺,但它具有非常好的通用性。在我們實驗室的實驗中,CaffeNet 架構的訓練時間在 Caffe 中比在 Keras 中(使用了 Theano 後端)少 5 倍。Caffe 的缺點是它不夠靈活。如果你想給它來一點新改變,那你就需要使用 C++ 和 CUDA 編程,不過你也可以使用 Python 或 Matlab 介面進行一些小改變。
Caffe 的文檔非常貧乏。你需要花大量時間檢查代碼才能理解它(Xavier 初始化有什麼用?Glorot 是什麼?)。Caffe 的最大缺點之一是它的安裝。它需要解決大量的依賴包……
MXNet
mxnet 是一個支持大多數編程語言的框架之一,包括 Python,R,C++,Julia 等。但我覺得使用 R 語言的開發者會特別偏愛 mxnet,因為至今為止還是 Python 以不可置疑的態勢稱霸深度學習語言的。我對多 GPU 的擴展能力有點疑慮並且我很原意去瞭解這樣實驗的更多細節,但目前我還是對 mxnet 持懷疑態度。
那麼,python為什麼適合人工智慧?
穀歌的TensorFlow基本上所有的代碼都是C++和Python,其他語言一般只有幾千行 。如果講運行速度的部分,用C++,如果講開發效率,用Python,誰會用Java這種高不成低不就的語言搞人工智慧呢?Python雖然是腳本語言,但是因為容易學,迅速成為科學家的工具(MATLAB也能搞科學計算,但是軟體要錢,且很貴),從而積累了大量的工具庫、架構,人工智慧涉及大量的數據計算,用Python是很自然的,簡單高效。現在大部分深度學習框架都支持Python,不用Python用誰?Python有非常多優秀的深度學習庫可用,人生苦短,就用Python。
如何讓自己使用Python開發的機器學習模型快捷低成本的跑起來,深度相容TensorFlow?你可以學習下穀歌的AIY Projects 專案。它也正在通過“AIY專案”這樣的計畫來促進開發人員和DIY社區對人工智慧的興趣,這些計畫本身代表了人工智慧。穀歌的目標是讓AI實現真正的平民化,令人工智慧無處不在,人人都可以學習。
儘管人工智慧領域還支持其他很多語言,但 Python 是應用範圍最廣而且最簡單的一個。但是為什麼要選擇 Python 呢——畢竟 Python 速度這麼慢?因為大多數的庫都使用的是符號式語言(symbolic language)方法而非命令式語言(imperative language)方法。解釋一下也就是說:不是一條接一條地執行你的指令,而是根據你給出的所有指令創建一個計算圖(computing graph)。這個圖被內部優化和編譯成可執行的 C++ 代碼。這樣你就能同時利用上兩個世界的最優之處:Python 帶來的開發速度和 C++ 帶來的執行速度。
我經常聽到人們談論深度學習和人工智慧——我該從哪里開始呢?TensorFlow 是現在最流行的吧?我聽說 Caffe 很常用,但會不會太難了?在 BEEVA Labs,我們常常需要應對許多不同的深度學習庫,所以我希望能夠將我們的發現和感想分享出來,幫助那些剛剛進入深度學習和人工智慧領域的人。
首先說幾個常用的深度學習語言。
TensorFlow
TensorFlow 是一個使用數據流圖(data flow graphs)進行數值計算的開源軟體庫。TensorFlow是Google Brain的第二代機器學習系統,已經開源。TensorFlow在很多地方可以應用,如語音識別,自然語言理解,電腦視覺,廣告等等。TensorFlow是一個非常靈活的框架,它能夠運行在個人電腦或者伺服器的單個或多個CPU和GPU上,甚至是移動設備上。
TensorFlow 支持 Python 和 C++,也允許在 CPU 和 GPU 上的計算分佈,甚至支持使用 gRPC 進行水準擴展。
Caffe
Caffe 不只是最老牌的框架之一,而是老牌中的老牌。起初的時候它並不是一個通用框架,而僅僅關注電腦視覺,但它具有非常好的通用性。在我們實驗室的實驗中,CaffeNet 架構的訓練時間在 Caffe 中比在 Keras 中(使用了 Theano 後端)少 5 倍。Caffe 的缺點是它不夠靈活。如果你想給它來一點新改變,那你就需要使用 C++ 和 CUDA 編程,不過你也可以使用 Python 或 Matlab 介面進行一些小改變。
Caffe 的文檔非常貧乏。你需要花大量時間檢查代碼才能理解它(Xavier 初始化有什麼用?Glorot 是什麼?)。Caffe 的最大缺點之一是它的安裝。它需要解決大量的依賴包……
MXNet
mxnet 是一個支持大多數編程語言的框架之一,包括 Python,R,C++,Julia 等。但我覺得使用 R 語言的開發者會特別偏愛 mxnet,因為至今為止還是 Python 以不可置疑的態勢稱霸深度學習語言的。我對多 GPU 的擴展能力有點疑慮並且我很原意去瞭解這樣實驗的更多細節,但目前我還是對 mxnet 持懷疑態度。
那麼,python為什麼適合人工智慧?
穀歌的TensorFlow基本上所有的代碼都是C++和Python,其他語言一般只有幾千行 。如果講運行速度的部分,用C++,如果講開發效率,用Python,誰會用Java這種高不成低不就的語言搞人工智慧呢?Python雖然是腳本語言,但是因為容易學,迅速成為科學家的工具(MATLAB也能搞科學計算,但是軟體要錢,且很貴),從而積累了大量的工具庫、架構,人工智慧涉及大量的數據計算,用Python是很自然的,簡單高效。現在大部分深度學習框架都支持Python,不用Python用誰?Python有非常多優秀的深度學習庫可用,人生苦短,就用Python。
如何讓自己使用Python開發的機器學習模型快捷低成本的跑起來,深度相容TensorFlow?你可以學習下穀歌的AIY Projects 專案。它也正在通過“AIY專案”這樣的計畫來促進開發人員和DIY社區對人工智慧的興趣,這些計畫本身代表了人工智慧。穀歌的目標是讓AI實現真正的平民化,令人工智慧無處不在,人人都可以學習。
請按此登錄後留言。未成為會員? 立即註冊