在今天舉行的 2019 年 TensorFlow 開發(fā)者峰會上,谷歌宣布了其針對研究和生產(chǎn)的開源機(jī)器學(xué)習(xí)庫的一些更新。TensorFlow 2.0 alpha 提供即將發(fā)生的變化的預(yù)覽,旨在讓初學(xué)者更容易使用 ML。
TensorFlow 2.0 注重易用性,提供有 API 供初學(xué)者和資深人士用來創(chuàng)建機(jī)器學(xué)習(xí)模型。在 TensorFlow 2.0 的新功能 和 標(biāo)準(zhǔn)化 Keras 等近期發(fā)布的文章中,我們介紹過它的新功能和平臺的發(fā)展方向。
我們在 TensorFlow 開發(fā)者峰會 上宣布了 TensorFlow 2.0 Alpha 版,用戶現(xiàn)在可以搶先體驗。
注:TensorFlow 開發(fā)者峰 鏈接https://www.tensorflow.org/dev-summit
入門指南
要快速上手 TensorFlow 2.0 Alpha 版,最佳途徑是前往 TensorFlow 的新網(wǎng)站。您可以在 tensorflow.org/alpha 上找到 Alpha 版的教程和指南。Alpha 版文檔中的每個教程均會自動下載并安裝 TensorFlow 2.0 Alpha 版,并且后續(xù)將提供更多內(nèi)容!
注:tensorflow.org/alpha 鏈接https://www.tensorflow.org/alpha
我們建議您先查看面向初學(xué)者和資深人士的 “Hello World” 示例,然后再閱讀 Effective TensorFlow 2.0 等指南。
初學(xué)者示例 使用的是 Keras Sequential API,這是最簡單的 TensorFlow 2.0 入門方法。
資深人士示例 展示如何命令式地編寫正向傳遞、如何使用 GradientTape 編寫自定義訓(xùn)練循環(huán),以及如何使用 tf.function 自動編譯代碼(僅需一行代碼?。?/p>
注:初學(xué)者示例 鏈接https://colab.research.google.com/github/tensorflow/docs/blob/master/site/en/r2/tutorials/quickstart/beginner.ipynb
資深人士示例 鏈接https://colab.research.google.com/github/tensorflow/docs/blob/master/site/en/r2/tutorials/quickstart/advanced.ipynb
除此之外,我們還提供有各類新 指南,包括:
重要的 AutoGraph 指南(讓您能夠獲得圖表的全部性能和可移植性,而無需編寫圖表級代碼)
代碼升級 指南(通過轉(zhuǎn)換腳本可以方便地將 TensorFlow 1.x 代碼轉(zhuǎn)換為 2.0 代碼)
其他有關(guān) Keras 的初期指南
注:指南 鏈接https://github.com/tensorflow/docs/tree/master/site/en/r2/guide
AutoGraph 鏈接
https://github.com/tensorflow/docs/blob/master/site/en/r2/guide/autograph.ipynb
Kera 鏈接
https://github.com/tensorflow/docs/tree/master/site/en/r2/guide/keras
若您想要查看更改的內(nèi)容,也可參閱 API 參考 修訂版(現(xiàn)在符號的使用大大減少)。請注意,雖然我們正在積極開發(fā) TensorFlow 2.0,但 tensorflow.org 的落地頁仍默認(rèn)為 1.x 文檔。若您打算研究 API 參考,請務(wù)必選擇合適的 TensorFlow 版本。
注:API 參考 鏈接
https://www.tensorflow.org/versions/r2.0/api_docs/python/tf
安裝
若要安裝 Alpha 版,我們建議您創(chuàng)建一個新的虛擬環(huán)境并使用 “pip install --upgrade --pre tensorflow” 或 “tensorflow-gpu”(需要 CUDA 10)。我們會較為頻繁地更新此版本,添加新功能。您亦可將 “!” 添加至命令 “!pip install --upgrade --pre tensorflow”,在 Colab 中試用。(以上所有教程和指南均會自動安裝最新版本)。
注:Colab 鏈接https://colab.research.google.com/notebooks/welcome.ipynb#recent=true
函數(shù),而非會話
下面我們深入介紹 2.0 中的這兩個功能如何協(xié)同工作:Eager execution 與 “@tf.function”。
其中一個最明顯的變化是,TensorFlow 是 “Eager 優(yōu)先”,這意味著 op 在調(diào)用后會立即運(yùn)行。在 TensorFlow 1.x 中,您可能會先構(gòu)圖,然后通過 “tf.Session.run()” 執(zhí)行圖的各個部分。TensorFlow 2.0 從根本上簡化了 TensorFlow 的使用 — 同樣出色的 op,現(xiàn)在卻更易理解和使用。
a=tf.constant([1,2])b=tf.constant([3,4])print(a+b)#returns:tf.Tensor([46],shape=(2,),dtype=int32)
TensorFlow 2.0 使用 Keras 作為開發(fā)者的核心體驗。在 2.0 中,您可以如常使用 Keras,利用 Sequential API 構(gòu)建模型,然后使用 “compile” 和 “fit”。tensorflow.org 中所有這些熟悉的 “tf.keras” 示例均可在 2.0 中實現(xiàn) “開箱即用”。
Keras 的 “fit()” 適用于很多情況,但是,需要更高靈活性的開發(fā)者現(xiàn)在可以有更多選擇。我們來看一下 此示例 中以 TensorFlow 2.0 風(fēng)格編寫的自定義訓(xùn)練循環(huán):
deftrain_one_step(model,optimizer,x,y):withtf.GradientTape()astape:logits=model(x)loss=compute_loss(y,logits)grads=tape.gradient(loss,model.trainable_variables)optimizer.apply_gradients(zip(grads,model.trainable_variables))compute_accuracy(y,logits)returnlossdeftrain(model,optimizer):train_ds=mnist_dataset()step=0loss=0.0forx,yintrain_ds:step+=1loss=train_one_step(model,optimizer,x,y)iftf.equal(step%10,0):tf.print('Step',step,':loss',loss,';accuracy',compute_accuracy.result())returnstep,loss,accuracy
注:此示例 鏈接
https://github.com/tensorflow/docs/blob/master/site/en/r2/guide/autograph.ipynb
此示例采用 Autograd 風(fēng)格的 GradientTape,并通過優(yōu)化器手動應(yīng)用您的梯度。在編寫具有復(fù)雜內(nèi)部運(yùn)作的自定義訓(xùn)練循環(huán)(譬如在強(qiáng)化學(xué)習(xí)中)或進(jìn)行研究(輕松幫您落實提高優(yōu)化器效率的新想法)時,這特別有幫助。
“Eager execution” 還有助于調(diào)試和監(jiān)控運(yùn)行中的代碼,您可以使用 Python 調(diào)試程序檢查變量、層及梯度等對象。在訓(xùn)練循環(huán)中,我們使用 “if”、“for” 和 “print()” 等 Python 語句。
一旦代碼運(yùn)行正常,您便會想要獲得圖表優(yōu)化和效率。為此,您可以利用裝飾器 “@tf.function” 封裝 “train”?!皌f.function” 中內(nèi)置 Autograph,因此您無需任何特殊操作便可獲取以用圖表效率運(yùn)行的 “if” 或 “for” 子句。
@tf.functiondeftrain(model,optimizer):train_ds=mnist_dataset()step=0loss=0accuracy=0forx,yintrain_ds:#如上所述,包括“if”和“print()”returnstep
這段代碼并不會受注釋影響,但我們會將其編譯到可在 GPU、TPU 上輕松運(yùn)行的圖表中,或?qū)⑵浔4嬷?“SavedModel” 留待后用。
針對這對代碼,尤為有趣之處在于,通過在 “@tf.function” 中封裝 “train()”,“train_one_step()”、“compute_loss()” 和 “compute_accuracy()” 也會自動進(jìn)行轉(zhuǎn)換。您也可選擇在 “@tf.function” 中僅封裝部分運(yùn)算,從而獲得所需行為。
此外,TensorFlow 2.0 完全支持 Estimator。請參閱新教程,了解提升樹和模型理解的相關(guān)內(nèi)容。
-
代碼
+關(guān)注
關(guān)注
30文章
4779瀏覽量
68521 -
機(jī)器學(xué)習(xí)
+關(guān)注
關(guān)注
66文章
8406瀏覽量
132558 -
tensorflow
+關(guān)注
關(guān)注
13文章
329瀏覽量
60527
原文標(biāo)題:TensorFlow 2.0 Alpha 版發(fā)布啦!
文章出處:【微信號:rgznai100,微信公眾號:rgznai100】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論