您好,登錄后才能下訂單哦!
本篇文章為大家展示了如何使用tf.Module來更好地構建Autograph,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。
前面在介紹Autograph的編碼規范時提到構建Autograph時應該避免在@tf.function修飾的函數內部定義tf.Variable.
但是如果在函數外部定義tf.Variable的話,又會顯得這個函數有外部變量依賴,封裝不夠完美。
一種簡單的思路是定義一個類,并將相關的tf.Variable創建放在類的初始化方法中。而將函數的邏輯放在其他方法中。
這樣一頓猛如虎的操作之后,我們會覺得一切都如同人法地地法天天法道道法自然般的自然。
驚喜的是,TensorFlow提供了一個基類tf.Module,通過繼承它構建子類,我們不僅可以獲得以上的自然而然,而且可以非常方便地管理變量,還可以非常方便地管理它引用的其它Module,最重要的是,我們能夠利用tf.saved_model保存模型并實現跨平臺部署使用。
實際上,tf.keras.models.Model, tf.keras.layers.Layer 都是繼承自tf.Module的,提供了方便的變量管理和所引用的子模塊管理的功能。
因此,利用tf.Module提供的封裝,再結合TensoFlow豐富的低階API,實際上我們能夠基于TensorFlow開發任意機器學習模型(而非僅僅是神經網絡模型),并實現跨平臺部署使用。
定義一個簡單的function。
下面利用tf.Module的子類化將其封裝一下。
在tensorboard中查看計算圖,模塊會被添加模塊名demo_module,方便層次化呈現計算圖結構。
除了利用tf.Module的子類化實現封裝,我們也可以通過給tf.Module添加屬性的方法進行封裝。
tf.keras中的模型和層都是繼承tf.Module實現的,也具有變量管理和子模塊管理功能。
上述內容就是如何使用tf.Module來更好地構建Autograph,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。