为什么 Python被Google选为TensorFlow的开发语言呢?使用 Python比C++语言进行机器学习有什么优势?
其實(shí)TensorFlow大部分內(nèi)核并不是用Python編寫的 :它是高度優(yōu)化了C++和CUDA(Nvidia用于編程GPU的語言)的組合。 相反,通常它是使用了Eigen (高性能C ++和CUDA庫)和NVidia的cuDNN (用于NVidia GPU的非常優(yōu)化的DNN庫,用于卷積等功能)。
TensorFlow的模型是程序員用“一種語言”(很可能是Python!)來表達(dá)。 這個(gè)模型,是寫在TensorFlow結(jié)構(gòu)中的,如:
h1 = tf.nn.relu(tf.matmul(l1, W1) + b1)
h2 = ...
當(dāng)Python運(yùn)行時(shí),實(shí)際上并沒有被執(zhí)行。 相反,實(shí)際創(chuàng)建的是一個(gè)數(shù)據(jù)流圖 ,表示采取特定輸入,應(yīng)用特定操作,將結(jié)果提供給其他操作的輸入,等等。 該模型由快速C ++代碼執(zhí)行,并且在大多數(shù)情況下,操作之間的數(shù)據(jù)不會(huì)被復(fù)制回Python代碼 。
然后,程序員通過拉扯節(jié)點(diǎn)來驅(qū)動(dòng)這個(gè)模型的執(zhí)行,通常用Python進(jìn)行訓(xùn)練,有時(shí)在Python中,有時(shí)是在原始的C ++中:
sess.run(eval_results)
這一個(gè)Python程序(或C ++函數(shù)調(diào)用)使用C ++的進(jìn)程內(nèi)調(diào)用或分布式版本的RPC調(diào)用C ++ TensorFlow服務(wù)器來告訴它執(zhí)行,然后復(fù)制結(jié)果。
所以說,我們?cè)僬f一下這個(gè)問題:為什么TensorFlow選擇Python作為表達(dá)和控制模型訓(xùn)練而且支持的非常好的語言?
答案很簡(jiǎn)單:Python可能是大量數(shù)據(jù)科學(xué)家和機(jī)器學(xué)習(xí)專家用的最舒適的語言,也是易于集成和控制C ++后端的語言,同時(shí)也是廣泛使用與谷歌的公司內(nèi)外和他們的開源產(chǎn)品。 鑒于使用TensorFlow的基本模型,Python的性能并不重要,這是一個(gè)很自然的契合。 NumPy也是一個(gè)巨大的加分,它可以很容易地在Python中進(jìn)行預(yù)處理(也是高性能),然后將它們提供給TensorFlow,以獲得真正CPU-heavy的東西。
總結(jié)
以上是生活随笔為你收集整理的为什么 Python被Google选为TensorFlow的开发语言呢?使用 Python比C++语言进行机器学习有什么优势?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 为什么要学C语言及C语言存在的意义,新手
- 下一篇: C++语言程序设计视频教程_清华大学_郑