中文字幕在线观看,亚洲а∨天堂久久精品9966,亚洲成a人片在线观看你懂的,亚洲av成人片无码网站,亚洲国产精品无码久久久五月天

Tensorflow 2.0 到底好在哪里?

2019-08-08    來源:raincent

容器云強勢上線!快速搭建集群,上萬Linux鏡像隨意使用

 

TensorFlow 現(xiàn)在已經(jīng)不僅是一個單純的工具包了,而是發(fā)展成為了一個平臺,在易用性、分布式訓(xùn)練和部署等方面都取得了長足的進(jìn)步。

如今已經(jīng)沒有人質(zhì)疑機(jī)器學(xué)習(xí)和深度學(xué)習(xí)的重要性了。數(shù)十年來這一行業(yè)讓人們見識過無數(shù)承諾、騙局和失望,時至今日兩大技術(shù)終于帶來了眾多實際應(yīng)用。機(jī)器學(xué)習(xí)或深度學(xué)習(xí)應(yīng)用離充分完善還有很長的路要走,但現(xiàn)有的成果已經(jīng)非常喜人了。

在所有優(yōu)秀的機(jī)器學(xué)習(xí)和深度學(xué)習(xí)框架中,TensorFlow 是最成熟的,在研究論文中被引用最多(就算排除谷歌員工的引用也是如此),也有著最出色的生產(chǎn)實踐案例。它可能不是最容易學(xué)習(xí)的框架,但比起它 2016 年剛發(fā)布時的情況,現(xiàn)在的 TensorFlow 對新人要友好得多。TensorFlow 還是許多谷歌服務(wù)的基礎(chǔ)。

TensorFlow 2.0 網(wǎng)站將該項目描述為“端到端開源機(jī)器學(xué)習(xí)平臺”。實際上 TensorFlow 已進(jìn)化成為一個更全面的“工具、庫和社區(qū)資源生態(tài)系統(tǒng)”,可幫助研究人員構(gòu)建和部署人工智能助力的應(yīng)用。

TensorFlow 2.0 有四大組成部分:

TensorFlow 核心,一個用于開發(fā)和訓(xùn)練機(jī)器學(xué)習(xí)模型的開源庫;

TensorFlow.js,一個用于在瀏覽器和 Node.js 上訓(xùn)練和部署模型的 JavaScript 庫;

TensorFlow Lite,一個輕量級庫,用于在移動和嵌入式設(shè)備上部署模型;

TensorFlow Extended,一個在大型生產(chǎn)環(huán)境中準(zhǔn)備數(shù)據(jù)、訓(xùn)練、驗證和部署模型的平臺。

 

 

TensorFlow 2.0 生態(tài)系統(tǒng)包括對 Python、JavaScript 和 Swift 的支持,以及對云、瀏覽器和邊緣設(shè)備的部署支持。TensorBoard(可視化)和 TensorFlow Hub(模型庫)都是很有用的工具。TensorFlow Extended(TFX)則支持端到端生產(chǎn)流水線。

在以前的文章中,我曾評測過 TensorFlow r0.10(2016)( https://www.infoworld.com/article/3127397/review-tensorflow-shines-a-light-on-deep-learning.html )和 TensorFlow 1.5(2018)( https://www.infoworld.com/article/3250165/tensorflow-review-the-best-deep-learning-library-gets-better.html )。

這些年來,TensorFlow 逐漸發(fā)展為基于數(shù)據(jù)流圖的機(jī)器學(xué)習(xí)和神經(jīng)網(wǎng)絡(luò)庫,擁有較高的學(xué)習(xí)曲線和一個底層 API。對普通人來說 TensorFlow 2.0 已經(jīng)不再那么難學(xué)了,2.0 版本還擁有一個高級 Keras API,支持在 JavaScript 中運行、在移動和嵌入式設(shè)備上部署以及在大型生產(chǎn)環(huán)境中運行。

TensorFlow 的競爭對手包括 Keras(可能使用除 TensorFlow 之外的其他后端)( https://www.infoworld.com/article/3305058/review-keras-sails-through-deep-learning.html )、MXNet( https://www.infoworld.com/article/3318557/review-mxnet-deep-learning-shines-with-gluon.html )(與 Gluon, https://www.infoworld.com/article/3318557/review-mxnet-deep-learning-shines-with-gluon.html )、PyTorch( https://www.infoworld.com/article/3289633/pytorch-review-a-deep-learning-framework-built-for-speed.html )、Scikit-learn( https://www.infoworld.com/article/3158509/review-scikit-learn-shines-for-simpler-machine-learning.html )和 Spark MLlib( https://www.infoworld.com/article/3141605/review-spark-lights-up-machine-learning.html )。最后兩個主要是機(jī)器學(xué)習(xí)框架,缺乏深度學(xué)習(xí)的相關(guān)設(shè)施。

你可以同時使用多種方案。在單條流水線中同時使用多個框架是非常合理的,例如使用 Scikit-learn 準(zhǔn)備數(shù)據(jù)并使用 TensorFlow 訓(xùn)練模型。

TensorFlow 核心

TensorFlow 2.0 的設(shè)計重點就是簡潔易用,它的新特性包括 Eager Execution、直觀的高級 API 以及在任何平臺上靈活構(gòu)建模型等更新。前兩個特性值得深入研究。

Eager Execution

Eager Execution 意味著 TensorFlow 代碼被定義后會立即運行,而不是先將節(jié)點和邊緣添加一個圖上,稍后再在一個會話中運行——后者是 TensorFlow 原來使用的模式。例如,TensorFlow r0.10 早期版本的“Hello,World!”腳本如下所示:

$ python
...
>>> import tensorflow as tf
>>> hello = tf.constant('Hello, TensorFlow!')
>>> sess = tf.Session()
>>> print(sess.run(hello))
Hello, TensorFlow!
>>> a = tf.constant(10)
>>> b = tf.constant(32)
>>> print(sess.run(a + b))
42
>>> exit()

注意這里使用的 tf.Session() 和 sess.run()。在 TensorFlow 2.0 中,Eager Execution 模式是默認(rèn)的,如下例所示。

 

 

TensorFlow 2.0 中的 Eager Execution 示意。這個筆記本可以在谷歌 Colab 中運行,或者在安裝好預(yù)設(shè)的 Jupyter 筆記本中也能運行。

tf.keras

前面的兩個示例都使用了底層 TensorFlow API。“活用 TensorFlow 2.0 指南”( https://www.tensorflow.org/beta/guide/effective_tf2 )則使用了高級別的 tf.kerasAPI 取代了舊的底層 API;這將大大減少你需要編寫的代碼量。你只需要每層寫一行代碼就能構(gòu)建 Keras 神經(jīng)網(wǎng)絡(luò),如果能善用循環(huán)結(jié)構(gòu)的話需要的代碼就更少了。下面的示例演示了 Keras 數(shù)據(jù)集和順序模型 API,它們運行在谷歌 Colab 中;谷歌 Colab 用來運行 TensorFlow 樣本和實驗很方便(還是免費的)。請注意,Colab 除了 CPU 外還提供了 GPU 和 TPU 實例。

 

 

上圖是一個 TensorFlow 筆記本,用于訓(xùn)練基本的深度神經(jīng)網(wǎng)絡(luò)對 MNIST 手寫數(shù)字圖像進(jìn)行分類。這是在谷歌 Colab 上運行的 TensorFlow 示例筆記本。注意這里使用了 tf.keras.datasets 來提供 MNIST 圖像。

過渡到 TensorFlow 2.0

在撰寫本文時,從 TensorFlow 1.14 到 TensorFlow 2.0 的過渡( https://github.com/orgs/tensorflow/projects/4 )還在進(jìn)行中,如下面的截圖所示。目前有兩個待辦事項、23 個正在進(jìn)行的任務(wù)以及 34 個已完成的任務(wù)。正在進(jìn)行的任務(wù)中既有完全沒有進(jìn)展的(可能是因為當(dāng)事人退出),也有幾乎完成的(代碼已進(jìn)入存儲庫主分支,但尚未經(jīng)過審查和部署)。

 

 

從 TensorFlow 1.14 到 TensorFlow 2.0 的過渡狀態(tài)可通過以下網(wǎng)址跟蹤: https://github.com/orgs/tensorflow/project/4 。此截圖生成于 6 月 21 日,但請注意該頁面自 4 月 17 日以來都未更新。

將模型升級到 TensorFlow 2.0

就像很多開源項目的大版本更新一樣,TensorFlow 2.0 對 API 引入了許多重大更改,需要你隨之升級你的代碼( https://www.tensorflow.org/beta/guide/migration_guide )。所幸我們有一個隨 TensorFlow 2.0 自動安裝的 Python 代碼升級腳本( https://www.tensorflow.org/beta/guide/upgrade ),還有一個給無法升級的 API 符號用的兼容模塊(compat.v1),只需使用字符串替換即可。運行升級腳本后,你的程序可能會在 TensorFlow 2.0 上運行,但是會引用 tf.compat.v1 命名空間,你得在有空的時候處理一下以保持代碼清潔。此外,你可以將 GitHub repos 上的 Jupyter 筆記本升級到 TensorFlow 2.0( http://tf2up.ml/ )。

使用 tf.function

Eager Execution 模式的缺點是可能會損失一些編譯和執(zhí)行流程圖的性能。有一種方法可以在不完全關(guān)閉 Eager Execution 模式的情況下恢復(fù)性能,它就是 tf.function。

基本上,當(dāng)你使用 @tf.function 注釋一個函數(shù)時后者將被編譯成一個圖,它和它調(diào)用的任何函數(shù)就(可能)更快地執(zhí)行、支持在 GPU 或 TPU 上運行,還支持導(dǎo)出到 SavedModel。tf.function 的一項便利的新功能是 AutoGraph( https://www.tensorflow.org/beta/guide/autograph ),它自動將 Python 控制流語句編譯為 TensorFlow 控制操作。

分布式訓(xùn)練

以前我研究 TensorFlow 時有兩種方法可以運行分布式訓(xùn)練:使用異步參數(shù)服務(wù)器,或使用第三方的 Horovod 項目——該項目是同步的并使用 all-reduce 算法。現(xiàn)在新版有五種原生的 TensorFlow 分布式策略( https://www.tensorflow.org/beta/guide/distribute_strategy ),以及一個用于選擇所需策略的 API,tf.distribute.Strategy;它允許你跨多個 GPU、多臺計算機(jī)或多個 TPU 分發(fā)訓(xùn)練。此 API 還可用于在不同平臺上分發(fā)評估和預(yù)測。

 

 

TensorFlow 現(xiàn)在支持五種原生分布式策略,TensorFlow 2.0 beta 還對三種訓(xùn)練 API 提供不同級別的支持。

TensorFlow.js

TensorFlow.js( https://www.tensorflow.org/js )是一個用于在 JavaScript 中開發(fā)和訓(xùn)練機(jī)器學(xué)習(xí)模型并在瀏覽器或 Node.js 中部署它們的庫。還有一個基于 TensorFlow.js 的高級庫 ml5.js( https://ml5js.org/ ),使用戶無需直接面對復(fù)雜的張量和優(yōu)化器。

TensorFlow.js 運行在瀏覽器中( https://www.tensorflow.org/js/guide/platform_environment ),支持移動設(shè)備和桌面設(shè)備。如果你的瀏覽器支持 WebGL 著色器 API,TensorFlow.js 就可以使用它們并利用 GPU 計算能力,帶來相比 CPU 后端多達(dá) 100 倍的加速效果。在配備 GPU 的計算機(jī)上,TensorFlow.js 演示( https://www.tensorflow.org/js/demos/ )在瀏覽器中運行得非?。

在 Node.js 上,TensorFlow.js 可以使用已安裝的 TensorFlow 版本作為后端,或者運行基本的 CPU 后端。CPU 后端是純 JavaScript 的,并行優(yōu)化不夠充分。

你可以在瀏覽器上運行官方 TensorFlow.js 模型( https://www.tensorflow.org/js/models/ )、轉(zhuǎn)換 Python 模型( https://www.tensorflow.org/js/tutorials#convert_pretained_models_to_tensorflowjs )、使用遷移學(xué)習(xí)來用你自己的數(shù)據(jù)自定義模型( https://www.tensorflow.org/js/tutorials/transfer/what_is_transfer_learning ),以及直接在 JavaScript 中構(gòu)建和訓(xùn)練模型( https://www.tensorflow.org/js/tutorials )。

TensorFlow Lite

TensorFlow Lite( https://www.tensorflow.org/lite/ )是一個用于設(shè)備上推斷的開源深度學(xué)習(xí)框架。它目前為 iOS、ARM64 和樹莓派構(gòu)建了模型。

TensorFlow Lite 的兩大組件分別是解釋器和轉(zhuǎn)換器。解釋器用來在許多不同的硬件類型上運行特別針對優(yōu)化的模型。轉(zhuǎn)換器則將 TensorFlow 模型轉(zhuǎn)換為高效形式供解釋器使用,并可引入優(yōu)化以改善程序體積和性能。預(yù)先訓(xùn)練的模型有圖像分類、對象檢測、智能回復(fù)、姿勢估計和語義分割等類型。還有用于手勢識別、圖像分類、對象檢測和語音識別的示例應(yīng)用。

TensorFlow Extended

TensorFlow Extended(TFX)( https://www.tensorflow.org/tfx/ )是用于部署機(jī)器學(xué)習(xí)生產(chǎn)流水線的端到端平臺。你訓(xùn)練好一個模型就要考慮使用 TFX 了。其流水線包括數(shù)據(jù)驗證( https://www.tensorflow.org/tfx/guide/tfdv )、功能設(shè)計( https://www.tensorflow.org/tfx/transform/get_started )、建模( https://www.tensorflow.org/tfx/guide/train )、模型評估( https://www.tensorflow.org/tfx/model_analysis/get_started )、服務(wù)推斷( https://www.tensorflow.org/tfx/guide/serving )以及在線平臺、移動原生平臺和 JavaScript 平臺的部署管理。下圖顯示了 TFX 流水線的組件是如何組合在一起的。

 

 

TensorFlow Extended 示意圖。

Swift for TensorFlow

Swift for TensorFlow( https://www.tensorflow.org/swift )是一個用于深度學(xué)習(xí)和可微分編程的下一代(并且仍不穩(wěn)定)平臺。它有一個用于訓(xùn)練的高級 API,看起來很像 Python TensorFlow,但它也支持使用 @differentiable 屬性自動微分構(gòu)建到 Swift 編譯器的一個 fork 中。Swift for TensorFlow 可以導(dǎo)入和調(diào)用 Python 代碼,使開發(fā)者更容易從 Python TensorFlow 過渡過來。

TensorFlow 工具

目前有七種工具支持 TensorFlow( https://www.tensorflow.org/resources/tools )。它們分別是 TensorBoard,TensorFlow 圖的一組可視化工具;TensorFlow Playground,一個可調(diào)節(jié)的在線神經(jīng)網(wǎng)絡(luò);CoLab,又名 Colaboratory,一個免費的在線 Jupyter 筆記本環(huán)境;What-If 工具,可用于探索和調(diào)試 TensorBoard、CoLab 或 Jupyter 筆記本中的模型;ML Perf,流行的機(jī)器學(xué)習(xí)基準(zhǔn)測試套件;XLA(加速線性代數(shù)),一種用于線性代數(shù)的特定領(lǐng)域編譯器,可優(yōu)化 TensorFlow 計算;和 TFRC(TensorFlow 研究云),一個由 1000 多個云 TPU 組成的集群,研究人員可以申請免費使用。

總的來說,TensorFlow 2.0 測試版已經(jīng)在很多方面取得了很大進(jìn)展。在 tf.keras API 和 Eager Execution 模式的幫助下,新版核心框架更易于學(xué)習(xí)、使用和調(diào)試。你可以有選擇地將要編譯的函數(shù)標(biāo)記為圖形。有五種方法可以進(jìn)行分布式訓(xùn)練和推斷。

新版有一套完整的組件,也就是 TFX,用于構(gòu)建從數(shù)據(jù)驗證到推斷模型管理的全套機(jī)器學(xué)習(xí)流水線。你可以在瀏覽器或 Node.js 上運行 TensorFlow.js,還可以在移動設(shè)備和嵌入式設(shè)備上運行 TensorFlow Lite。最后,Swift for TensorFlow 將為模型構(gòu)建開辟新的可能性。

作者:Martin Heller

譯者:王強

原文鏈接: https://www.infoworld.com/article/3405641/tensorflow-2-review-easier-end-to-end-machine-learning.html

標(biāo)簽: Tensorflow 

版權(quán)申明:本站文章部分自網(wǎng)絡(luò),如有侵權(quán),請聯(lián)系:west999com@outlook.com
特別注意:本站所有轉(zhuǎn)載文章言論不代表本站觀點!
本站所提供的圖片等素材,版權(quán)歸原作者所有,如需使用,請與原作者聯(lián)系。

上一篇:將數(shù)據(jù)化為善款,4400億美元的AI新戰(zhàn)場 | 報告

下一篇:超越云計算:對數(shù)據(jù)庫管理系統(tǒng)未來的思考