python 機器學習不會很慢嗎?

我不懂機器學習這個領域。業餘會點Python和cpp。

我一直納悶現在大火的「機器學習」「人工智慧」為什麼都流行用py實現?

python的運行效率不是很低嗎?


誰特么邀請我的= =砍死。。

首先 Python 的的性能 emmm 的確是一個讓人吐槽已久的問題。

但是 Python 有三個非常重要的特性,易上手,社區豐富,性能擴展方便

易上手。

這個很容易理解了,Python 算是目前對於新手最為友好的語言了,你基本直接隨意找一個 Tutorial 走一遍基本就能上手了。

而且 Python 作為一種解釋性語言,人機交互方面,天生比 C++/Scala 這種編譯型語言要人類有好的多。快速驗證一個模型什麼的,出個 圖什麼的,都很方便。

社區豐富:

Python 目前周邊算是非常成熟,針對不同的需求都有著自己比較受歡迎的庫什麼的

比如臨時寫個 web 介面什麼的

pallets/flaskgithub.com圖標django/djangogithub.com圖標

比如覺得自帶的 REPL 不太好用的

jupyter/jupytergithub.com圖標jupyter/notebookgithub.com圖標

想要快速出個圖什麼的

https://github.com/plotly/plotly.pygithub.com

pyecharts/pyechartsgithub.com圖標

配合前面的易上手的特性,模型人員在快速驗證想法,迭代 prototype 的時候,可以很方便的按需選擇,而不必去考慮太多關於工程上的細節。

性能擴展方便

CPython 一直保持的一點就是,在你覺得某些地方存在性能瓶頸的時候,可以很方便的用其餘語言進行擴展

pandas-dev/pandasgithub.com圖標numpy/numpygithub.com圖標tensorflow/tensorflowgithub.com圖標

比如這些常見的一大堆東西,模式都是 C/C++ 底層性能部分,Python wrap 之後暴露給使用者。

所以吧,對於 Python 來講,性能的確是個問題,但是不是根本問題,我們可以有很多方法去彌補這個問題。

而 Python 帶來的收益,就目前來看,的確是對降低編程門檻,加快迭代效率而言有著不錯的利好。

所以這個問題,最終依舊歸根結底一句話:「我們所做的任何一個選擇都是在利弊之間選擇的一個妥協點


py是遙控器,cpp是電視機.

遙控器是給人用的,用兩節五號電池就行了.

電視機是拿來接收信號展示的,所以用了220V交流電.

機器學習中,py只是用來調用cpp牌電視機的遙控器.


python機器學習開發用到的庫底層基本都是cpp實現的吧,所以在數據量不是很大的前提下還是可以接受的


純python實現是比c慢很多比如jieba(一個中文分詞庫),cppjieba就比純python實現的快10倍左右。不過你可以使用c來實現python中的部分函數,我就使用c來實現了jieba中的核心函數,提升了一倍左右。詳情可以見github :deepcs233/jieba_fast

我的blog:Deepcs


不會,因為如果大數據,計算量極大的情況,都在用顯卡計算,python介面對速度的影響微不足道,如果計算量很小,那python比起cpp也不會有太大差距。


理論上彙編語言運行效率最快,那為什麼我們不使用彙編語言進行開發呢?某個運行在虛擬機里的語言,號稱一次編譯到處運行,你覺得是因為它比C++更快嗎?顯然,大家選擇這門語言,無非是因為它的社區生態好而已。所以,運行效率和開發效率是兩個不同的概念。

作為天生喜歡競爭的人類,我們更看重的是怎麼能比別人更快搶佔市場,怎麼能比別人更快賺到錢。讓代碼跑得比別人快這件事情,除了愚蠢的程序員以外,沒有人會真正在乎,想想那些年寫過的Todo,你當真以為我們不在乎嗎?我們只是沒有時間而已!

Python和Lua都是腳本語言,都提供了C/C++的介面,所以對於核心級別的代碼,通常會用C/C++來編寫以保證效率,而業務層面通常都用這些腳本語言封裝後調用,目的是更快地完成業務邏輯,Python擁有最全面的第三方庫,你覺得這些作者不會考慮到這種問題?

總而言之,你犧牲運行效率來換取開發效率,這是理所應當的事情,不應該指責Python慢,人生苦短,我用Python。


開發效率和運行效率是兩回事,用python開發,再調用C++來運行


不會。python做機器學習底層也會調c++的代碼


會慢,所以TensorFlow只是把Python當成交互介面,並不會用Python去運算。


同理Java不是很慢嗎?為什麼那麼多人學?手動微笑


但是它開發快呀


大部分庫由c實現,只要函數式編程,把大部分東西寫到函數里就好了。

所以,我選擇scala……


機器語言運行效率最高,en……一定是這樣的。


工業界不清楚,應該不會都用py吧,但科研界,py的比重非常大了,特別是剛接觸機器學習的。。

畢竟,你是想花一倍時間寫代碼兩倍時間跑,還是花兩倍時間寫代碼一倍時間跑呢?學生或者菜鳥更喜歡前者吧


python編譯器是c寫的,據說大佬們在用彙編重寫,然而工作量巨大,能用彙編寫出來,和c差不多效率 怕不是奔著滅絕滅絕別的語言前進


運行效率低是低,但那幾毫秒差距,人咋感覺。

再而且硬體早晚不是問題。

再而且python開發效率高,通俗易懂。

喜歡運行效率高,大可以學彙編或者機器語言,但為啥沒多大有人學,晦澀難懂,所以之後c就出來,然後python這位也是沖著c寶座而來的


推薦閱讀:

如何看待摩根大通利用 AI 機器人執行金融交易?其工作原理是怎樣的?
cart樹怎麼進行剪枝?
在可見的未來,機器會不會替代投行員工?
知識圖譜目前亟待的問題有哪些?
美國機器學習方向的 master 找工作前景如何?

TAG:Python | 機器學習 |