TensorFlow2.0終于問世,Alpha版可以搶先體驗。新版本主打簡單易用可擴展,大大簡化API,最后,連logo也改了。
今天凌晨,谷歌在加州舉辦TensorFlow開發(fā)者峰會(TensorFlow Dev Summit),正式發(fā)布2.0版本。
這場發(fā)布會有幾大亮點:
TensorFlow 2.0Alpha版發(fā)布,用戶現(xiàn)在可以搶先體驗;
2.0版本具有簡易性、更清晰、擴展性三大特征,大大簡化API;
提高了TensorFlow Lite和TensorFlow.js部署模型的能力;
發(fā)布會還把TensorFlow目前的家底透露了一遍:目前TF在全球已經(jīng)有超過4100萬的下載次數(shù),社區(qū)有超過1800多個貢獻者。
盡管官方?jīng)]有透露中國社區(qū)的情況,但是發(fā)布會現(xiàn)場展示一張全球地圖,根據(jù)圖中的用戶分布情況可以推測,目前TF中國應(yīng)該是僅次于美國和歐洲的第三大地區(qū)。
另外一個值得注意的變化是,從2.0開始,TensorFlow的logo也不一樣,從類似積木的形狀變成了兩個分開的字母“T”和“F”,或許也意味著減少冗余,看上去更簡潔。
簡單易用可擴展,TF2.0迎來新架構(gòu)
TensorFlow 已經(jīng)發(fā)展為世界上最受歡迎和被廣泛采用的機器學(xué)習(xí)平臺之一,自2015年問世,并在去年11月迎來三周歲生日。
之前開發(fā)者反饋,希望TensorFlow能夠簡化API、減少冗余并改進文檔和示例。這次2.0發(fā)布,聽取了開發(fā)者的建議,因此新版本有以下三大特點:簡單、強大、可拓展。
基于這三大特點,TensorFlow 2.0也有新架構(gòu),如下面的簡化概念圖所示:
TensorFlow 2.0 將專注于簡單性和易用性,具有以下更新:
使用 Keras 和 eager execution,輕松構(gòu)建模型
在任意平臺上實現(xiàn)生產(chǎn)環(huán)境的穩(wěn)健模型部署
為研究提供強大的實驗工具
通過清理廢棄的 API 和減少重復(fù)來簡化 API
下面詳細介紹TF2.0的新特性。
易用至上,TensorFlow 2.0 Alpha發(fā)布
這次TensorFlow的一些列更新,重點就在于:讓你使用得更加簡單。
TensorFlow 2.0發(fā)布以后,訓(xùn)練的流程將變得十分簡潔:
主要流程就是:數(shù)據(jù)集成和轉(zhuǎn)換→模型構(gòu)建→訓(xùn)練→保存模型。
當(dāng)然,TensorFlow也秉承著“哪兒都可以部署”的原則,使其在應(yīng)用方面更加靈活和方便:
下面是TensorFlow2.0在這次更新中的幾大亮點:
TensorFlow Alpha
更易用:諸如tf.keras等高級API將更易于使用;并且Eager execution將成為默認設(shè)置。例如:
>>>tf.add(2,3)
更清晰:刪除了重復(fù)的功能;不同API的調(diào)用語法更加一致、直觀;兼容性更加完善。
更靈活:提供完整的低級API;可在tf.raw_ops中訪問內(nèi)部操作;提供變量、checkpoint和層的可繼承接口。
當(dāng)然,TensorFlow 2.0 Alpha版本從安裝上便十分的簡單,僅需一句話:
pip install -U --pre tensorflow
而Eager execution 與 “@tf.function”作為核心升級重點,接下將會對其如何協(xié)同工作進行做詳細介紹。
其中一個最明顯的變化是,TensorFlow 是 “Eager 優(yōu)先”,這意味著 op 在調(diào)用后會立即運行。在 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([4 6], 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())return step, loss, accuracy
此示例采用 Autograd 風(fēng)格的 GradientTape,并通過優(yōu)化器手動應(yīng)用你的梯度。在編寫具有復(fù)雜內(nèi)部運作的自定義訓(xùn)練循環(huán)(譬如在強化學(xué)習(xí)中)或進行研究(輕松幫您落實提高優(yōu)化器效率的新想法)時,這特別有幫助。
“Eager execution” 還有助于調(diào)試和監(jiān)控運行中的代碼,可以使用 Python 調(diào)試程序檢查變量、層及梯度等對象。在訓(xùn)練循環(huán)中,使用 “if”、“for” 和 “print()” 等 Python 語句。
一旦代碼運行正常,便會想要獲得圖表優(yōu)化和效率。為此,可以利用裝飾器 “@tf.function” 封裝 “train”。“tf.function” 中內(nèi)置 Autograph,因此無需任何特殊操作便可獲取以用圖表效率運行的 “if” 或 “for” 子句。
@tf.functiondeftrain(model,optimizer):train_ds=mnist_dataset()step=0loss=0accuracy=0forx,yintrain_ds:#如上所述,包括“if”和“print()”return step
這段代碼并不會受注釋影響,但會將其編譯到可在 GPU、TPU 上輕松運行的圖表中,或?qū)⑵浔4嬷?“SavedModel” 留待后用。
針對這對代碼,尤為有趣之處在于,通過在 “@tf.function” 中封裝 “train()”,“train_one_step()”、“compute_loss()” 和 “compute_accuracy()” 也會自動進行轉(zhuǎn)換。也可選擇在 “@tf.function” 中僅封裝部分運算,從而獲得所需行為。
此外,TensorFlow 2.0 完全支持 Estimator。
tensorflow.org/alpha 鏈接
https://www.tensorflow.org/alpha
高級API變化
TensorFlow 2.0 在API上可謂是下足了功夫,在這個版本中,高級API將十分“易于擴展”且“擴展地很容易”:
例如,對tf.keras.optimizer tf.keras.layers tf.keras.loss等一些列高級API都做了“易用性”的優(yōu)化。例如:
值得注意的是,尤其是對諸如RNN layers等神經(jīng)網(wǎng)絡(luò)的高級API做了優(yōu)化,用戶還可以對其自定義。
可謂是開發(fā)者福音。
升級
TensorFlow 2.0 將包含許多 API 變更,例如,對參數(shù)進行重新排序、重新命名符號和更改參數(shù)的默認值。手動執(zhí)行所有這些變更不僅枯燥乏味,而且容易出錯。
為簡化變更過程并讓開發(fā)者盡可能順暢地過渡到 TensorFlow 2.0,TensorFlow 工程團隊創(chuàng)建了實用程序tf_upgrade_v2,可將舊代碼轉(zhuǎn)換至新 API。
tf_upgrade_v2 鏈接
https://github.com/tensorflow/docs/blob/master/site/en/r2/guide/upgrade.md
TensorFlow.js v1.0
TensorFlow for Javascript已經(jīng)有300,000次下載和100個貢獻者。 今天TensorFlow.js的1.0版本包括性能改進。
例如瀏覽器中MobileNet v1推理的9倍提升。 還有針對Web開發(fā)人員的新現(xiàn)成模型和更廣泛的平臺支持。
TensorFlow Lite:超20億移動設(shè)備部署使用
TensorFlow Lite是一個為移動和嵌入式設(shè)備打造的輕量級、跨平臺解決方案。
這樣一個輕量級的解決方案很有必要,因為機器學(xué)習(xí)越來越多地轉(zhuǎn)移到終端設(shè)備,如手機、汽車、可穿戴設(shè)備等。在這樣的設(shè)備上使用ML有很多限制,如有限的計算能力、有限的內(nèi)存、電池限制等,TensorFlow Lite可以很大程度上解決這些限制。
TensorFlow Lite的用例
一個驚人的事實:已經(jīng)有20億移動設(shè)備部署使用了TensorFlow Lite。
說明,TensorFlow Lite有很多國內(nèi)外客戶……
網(wǎng)易有道技術(shù)總監(jiān)林會杰作為“為什么選擇TensorFlow Lite”的代表,受邀上臺介紹了有道翻譯應(yīng)用TensorFlow Lite取得的成果。
TensorFlow Lite四大主題:
可用性(Usability):拿來即用
性能(Performance):模型執(zhí)行速度更快
優(yōu)化(Optimization):讓你的模型更小、更快
文檔(Documentation):有很多資源
可用性:部署簡單,拿來即用
保存模型,轉(zhuǎn)換到TF Lite,就是這么簡單。
新的TensorFlow Select功能讓模型轉(zhuǎn)換到TensorFlow Lite更簡單。
性能:在可用的硬件條件下,讓模型執(zhí)行盡可能快
有多快呢?訓(xùn)練MobileNet v1,CPU、GPU和Edge TPU下推理速度分別提升了1.9倍、7.7倍和62倍!
優(yōu)化:讓模型更小、更快
優(yōu)化表現(xiàn):
文檔:
One More Thing:
TensorFlow Lite工程師Pete Warden上臺介紹了一個非常酷的“小玩意”:
是一個名為珊瑚(Coral)的小型開發(fā)板,一款可以構(gòu)建和試驗AI設(shè)備的硬件。
它的原理類似樹莓派,但使用了定制的Google處理器,專為AI設(shè)計。沒錯,在這個小小的板上,你可以運行TensorFlow。
Warden展示了一個小demo:
說一個特定的單詞,Coral板上黃色的小燈會應(yīng)聲亮起來。
模型只有20KB大小,運行使用不到100KB的RAM和80KB Flash。
谷歌表示:“Coral提供了一個完整的本地AI工具包,可以輕松地將你的想法從原型變成到產(chǎn)品。”
像樹莓派一樣,可以期待更多使用Coral開發(fā)的有趣的事情。
售價149.99美元,傳送門:
https://coral.withgoogle.com/products/
-
谷歌
+關(guān)注
關(guān)注
27文章
6142瀏覽量
105100 -
機器學(xué)習(xí)
+關(guān)注
關(guān)注
66文章
8377瀏覽量
132409 -
tensorflow
+關(guān)注
關(guān)注
13文章
328瀏覽量
60499
原文標(biāo)題:TensorFlow 2.0 新鮮出爐!新版本,新架構(gòu),新特性
文章出處:【微信號:AI_era,微信公眾號:新智元】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論