iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 16
0
AI & Data

漫談機器學習與Tensorflow初探系列 第 16

Tensorflow之API與架構-Tensorflow初探

在之前的文章中,我們討論了TensorFlow是什麼。現在,讓我們開始看一下TensorFlow API層次結構。

https://ithelp.ithome.com.tw/upload/images/20191002/20115480DmWbhzoGS9.png

如同大多數軟體庫一樣,TensorFlow中包含許多抽象層。

https://ithelp.ithome.com.tw/upload/images/20191002/20115480M5U7cz2SHC.png

最底層的抽象層,是針對不同硬體平台實現的層。除非你的公司自己生產硬體,否則你不可能在此級別上完成大部分的事情。

https://ithelp.ithome.com.tw/upload/images/20191002/20115480ZqI8kVveFf.png

下一層級是TensorFlow C++ API。 這是你編寫自定義TensorFlow應用程序的方式,你會在C++中實現所需要的功能,並將其註冊為使用TensorFlow運作。這部分請參考有關擴展應用程序的TensorFlow文檔。

然後,TensorFlow將為你提供一個可以使用的python包裝器,就像現有功能一樣。在本文中,我們假設你不是專精ML的研究人員,因此你不必這樣做,但是如果你需要實現自己的自定義應用程式,則可以使用C++來做,一般來說也不會太難。

https://ithelp.ithome.com.tw/upload/images/20191002/20115480S5wImCl37d.png

下一級別的核心Python API是包含許多數值處理代碼,加法、減法、除法、矩陣乘法等的內容。創造變量、創造張量、獲取形狀,張量的所有尺寸以及所有核心基本數值處理內容,一切都在python API中。

https://ithelp.ithome.com.tw/upload/images/20191003/20115480uj387D5NCh.png

然後,有一組Python模組具有對實用神經網絡的高級表現方式,例如:

  • tf.layers有一種創造具有真實激活函數的新的隱藏神經元層的方法
  • tf.metrics有一種計算均方根誤差和輸入數據的方法
  • tf.losses有使用Logic計算交叉熵的方法
    這模型提供了在構建自定義NN模型時有用的元件。為什麼這邊要強調自定義NN模型?因為很多時候,你不需要自定義的神經網絡模型,所以很多時候你會因為各種原因(懶/沒錢)而採用相對標準的方法來訓練、評估和產生模型。你無需自定義訓練方式,而是使用梯度下降優化器系列中的一種,並且您將使傳播器的權重下降,並且需要迭代這樣的操作。在這種情況下,請勿編寫低級的loop。這邊只需使用tf.estimator即可。

https://ithelp.ithome.com.tw/upload/images/20191003/201154806qJdOdUDT7.png

估算器是TensorFlow中的高級API。它知道如何進行訊變、知道如何評估如何創建檢查點、如何保存模型以及如何將其設置為服務。它以明智的方式完成了所有工作,適合大多數機器學習模型和生產。因此,如果你在網路上看到示範的TensorFlow代碼,而沒使用estimator API,則只需忽略該代碼,然後關掉。你不必編寫一堆代碼來進行設備放置以及內存管理和分配,這些都能讓估算器來為你完成。這些就是TensorFlow的抽象級別。Cloud ML引擎與此層次結構正交。不管您以哪種抽象級別編寫TensorFlow代碼,CMLE都會為您提供託管服務。它託管於Tensorlow。因此,你可以在機器集群上的雲上運行TensorFlow,而無需安裝任何軟體或管理任何伺服器。


上一篇
什麼是Tensorflow?-Tensorflow初探
下一篇
惰性求值(lazy evaluation)-Tensorflow初探
系列文
漫談機器學習與Tensorflow初探19
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言