2017-01-05 77 views
1

我最近在Coursera上採用了Andrew Ng的方法。之後,我轉向Python並使用Pandas,Numpy,Sklearn來實現ML算法。現在在衝浪的時候,我碰到了tensorFLow,發現它非常驚人,並且實現了這個以MNIST數據爲輸入的example。 但我不確定爲什麼使用如庫(TensorFlow)? 我們不做任何並行計算,因爲在前一個時代更新的權重用於下一個時期? 我發現很難找到使用這種庫的理由嗎?爲什麼使用TensorFlow進行卷積神經網絡

+0

像Tensorflow和Theano這樣的庫不是爲了平行化。其中一個主要優點是它們編譯函數以快速生成C代碼,並且它們提供了區分這些代碼的快速方法。 –

回答

2

有幾種形式並行訓練卷積神經網絡(和許多其他機器學習模型)時TensorFlow提供的,其中包括:個人業務中

  1. 並行(如tf.nn.conv2d()tf.matmul()) 。這些操作對於多核CPU和GPU具有高效的並行實現,TensorFlow在任何可用的地方都使用這些實現。

  2. 操作之間的並行性。 TensorFlow爲您的模型使用數據流圖表示法,並且在數據流圖中存在兩個未通過有向路徑連接的節點,這些節點可以並行執行。例如,Inception圖像識別模型在其數據流圖中有許多並行分支(請參見this paper中的圖3),TensorFlow可以利用此模式同時運行多個操作。 AlexNet paper還介紹瞭如何使用「模型並行」在模型的不同部分並行運行操作,並且TensorFlow支持使用相同的機制。模型之間

  3. 並行複製品。 TensorFlow也被設計爲distributed execution。一種常見的並行訓練方案(「數據平行性」)涉及將數據集分成一組相同的工作人員,對每個工作人員針對不同數據執行相同的訓練計算,並在工作人員之間共享模型參數。

此外,像TensorFlow和Theano庫可以進行各種優化時,他們可以與模型的整個數據流圖工作。例如,它們可以消除常見的子表達式,避免重新計算常量值,並生成更高效的融合代碼。

0

您可以在sklearn或其他庫中找到預先烘焙的模型,但TensorFlow允許真正快速迭代定製機器學習模型。它還帶有a ton of useful functions,你必須(也可能不應該)自己寫。

對我來說,性能(儘管他們肯定關心性能)還不夠,而且更多的是關於如何快速剔除神經網絡。

相關問題