溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

如何使用tf.Module來(lái)更好地構(gòu)建Autograph

發(fā)布時(shí)間:2021-12-10 10:23:06 來(lái)源:億速云 閱讀:240 作者:柒染 欄目:大數(shù)據(jù)

本篇文章為大家展示了如何使用tf.Module來(lái)更好地構(gòu)建Autograph,內(nèi)容簡(jiǎn)明扼要并且容易理解,絕對(duì)能使你眼前一亮,通過(guò)這篇文章的詳細(xì)介紹希望你能有所收獲。

有三種計(jì)算圖的構(gòu)建方式:  靜態(tài)計(jì)算圖,動(dòng)態(tài)計(jì)算圖,以及Autograph。
TensorFlow 2.0主要使用的是動(dòng)態(tài)計(jì)算圖和Autograph。  
動(dòng)態(tài)計(jì)算圖易于調(diào)試,編碼效率較高,但執(zhí)行效率偏低。  
 靜態(tài)計(jì)算圖執(zhí)行效率很高,但較難調(diào)試。
而Autograph機(jī)制可以將動(dòng)態(tài)圖轉(zhuǎn)換成靜態(tài)計(jì)算圖,兼收?qǐng)?zhí)行效率和編碼效率之利。
當(dāng)然Autograph機(jī)制能夠轉(zhuǎn)換的代碼并不是沒(méi)有任何約束的,有一些編碼規(guī)范需要遵循,否則可能會(huì)轉(zhuǎn)換失敗或者不符合預(yù)期。
下面我們介紹使用tf.Module來(lái)更好地構(gòu)建Autograph。

一,Autograph和tf.Module概述

前面在介紹Autograph的編碼規(guī)范時(shí)提到構(gòu)建Autograph時(shí)應(yīng)該避免在@tf.function修飾的函數(shù)內(nèi)部定義tf.Variable.

但是如果在函數(shù)外部定義tf.Variable的話,又會(huì)顯得這個(gè)函數(shù)有外部變量依賴,封裝不夠完美。

一種簡(jiǎn)單的思路是定義一個(gè)類,并將相關(guān)的tf.Variable創(chuàng)建放在類的初始化方法中。而將函數(shù)的邏輯放在其他方法中。

這樣一頓猛如虎的操作之后,我們會(huì)覺(jué)得一切都如同人法地地法天天法道道法自然般的自然。

驚喜的是,TensorFlow提供了一個(gè)基類tf.Module,通過(guò)繼承它構(gòu)建子類,我們不僅可以獲得以上的自然而然,而且可以非常方便地管理變量,還可以非常方便地管理它引用的其它Module,最重要的是,我們能夠利用tf.saved_model保存模型并實(shí)現(xiàn)跨平臺(tái)部署使用。

實(shí)際上,tf.keras.models.Model, tf.keras.layers.Layer 都是繼承自tf.Module的,提供了方便的變量管理和所引用的子模塊管理的功能。

因此,利用tf.Module提供的封裝,再結(jié)合TensoFlow豐富的低階API,實(shí)際上我們能夠基于TensorFlow開(kāi)發(fā)任意機(jī)器學(xué)習(xí)模型(而非僅僅是神經(jīng)網(wǎng)絡(luò)模型),并實(shí)現(xiàn)跨平臺(tái)部署使用。

二,應(yīng)用tf.Module封裝Autograph

定義一個(gè)簡(jiǎn)單的function。

如何使用tf.Module來(lái)更好地構(gòu)建Autograph

下面利用tf.Module的子類化將其封裝一下。

如何使用tf.Module來(lái)更好地構(gòu)建Autograph

如何使用tf.Module來(lái)更好地構(gòu)建Autograph

如何使用tf.Module來(lái)更好地構(gòu)建Autograph

在tensorboard中查看計(jì)算圖,模塊會(huì)被添加模塊名demo_module,方便層次化呈現(xiàn)計(jì)算圖結(jié)構(gòu)。

如何使用tf.Module來(lái)更好地構(gòu)建Autograph

如何使用tf.Module來(lái)更好地構(gòu)建Autograph

如何使用tf.Module來(lái)更好地構(gòu)建Autograph

除了利用tf.Module的子類化實(shí)現(xiàn)封裝,我們也可以通過(guò)給tf.Module添加屬性的方法進(jìn)行封裝。

如何使用tf.Module來(lái)更好地構(gòu)建Autograph

如何使用tf.Module來(lái)更好地構(gòu)建Autograph

如何使用tf.Module來(lái)更好地構(gòu)建Autograph

三,tf.Module和tf.keras.Model,tf.keras.layers.Layer

tf.keras中的模型和層都是繼承tf.Module實(shí)現(xiàn)的,也具有變量管理和子模塊管理功能。

如何使用tf.Module來(lái)更好地構(gòu)建Autograph

如何使用tf.Module來(lái)更好地構(gòu)建Autograph

如何使用tf.Module來(lái)更好地構(gòu)建Autograph

如何使用tf.Module來(lái)更好地構(gòu)建Autograph

如何使用tf.Module來(lái)更好地構(gòu)建Autograph

如何使用tf.Module來(lái)更好地構(gòu)建Autograph

如何使用tf.Module來(lái)更好地構(gòu)建Autograph

上述內(nèi)容就是如何使用tf.Module來(lái)更好地構(gòu)建Autograph,你們學(xué)到知識(shí)或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識(shí)儲(chǔ)備,歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI