本篇文章為大家展示了如何使用tf.Module來更好地構建Autograph,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。
10年積累的成都做網站、成都網站建設經驗,可以快速應對客戶對網站的新想法和需求。提供各種問題對應的解決方案。讓選擇我們的客戶得到更好、更有力的網絡服務。我雖然不認識你,你也不認識我。但先網站設計后付款的網站建設流程,更有貢井免費網站建設讓你可以放心的選擇與我們合作。
前面在介紹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,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注創新互聯行業資訊頻道。