91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

在API中使用自定義層導致trainable_variables中的權重無法更新該怎么解決

發布時間:2021-12-23 15:20:44 來源:億速云 閱讀:128 作者:柒染 欄目:大數據

這篇文章將為大家詳細講解有關在API中使用自定義層導致trainable_variables中的權重無法更新該怎么解決,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。

一位從事NLP工程師Gupta發現了TensorFlow存在的一個嚴重bug:

每個在自定義層中使用Keras函數式API的用戶都要注意了!使用用Keras的Functional API創建的權重,可能會丟失。

這一話題在Reddit機器學習板塊上被熱議,引起不少TensorFlow用戶共鳴。

在API中使用自定義層導致trainable_variables中的權重無法更新該怎么解決

具體來說,就是在API中使用自定義層,會導致trainable_variables中的權重無法更新。而且這些權重也不會放入non_trainable_variables中。

也就是說,原本需要訓練的權重現在被凍結了。

讓這位工程師感到不滿的是,他大約一個月前在GitHub中把這個bug報告給谷歌,結果谷歌官方到現在還沒有修復

解決辦法

如何檢驗自己的代碼是否會出現類似問題呢?請調用model.trainable_variables來檢測自己的模型:

for i, var in enumerate(model.trainable_variables):
    print(model.trainable_variables[i].name)

看看你所有的可變權重是否正確,如果權重缺失或者未發生變化,說明你也中招了。

Gupta還自己用Transformer庫創建模型的bug在Colab筆記本中復現了,有興趣的讀者可以前去觀看。

https://colab.research.google.com/gist/Santosh-Gupta/40c54e5b76e3f522fa78da6a248b6826/missingtrainablevarsinference_var.ipynb

對此問題,Gupta給出的一種解決方法是:改為使用Keras子類創建模型。改用此方法后,所有的權重都將出現在trainable_variables中。

為了絕對確保用函數式API和子類方法創建的模型完全相同,Gupta在每個Colab筆記本底部使用相同的輸入對它們進行了推理,模型的輸出完全相同。

但是,使用函數式API模型進行訓練會將許多權重視為凍結,而且這些權重也沒有出現在non_trainable_variables中,因此無法為這些權重解凍。

為了檢查谷歌最近是否修復了該漏洞,Gupta還安裝了Nightly版的TF 2.3.0-rc1,保持框架處于最新狀態,但如今bug依然存在。

關于在API中使用自定義層導致trainable_variables中的權重無法更新該怎么解決就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

api
AI

肥城市| 唐海县| 尖扎县| 上高县| 竹溪县| 获嘉县| 抚宁县| 桃江县| 舟曲县| 龙岩市| 姚安县| 朝阳区| 南陵县| 南川市| 西乌| 喀喇沁旗| 专栏| 松溪县| 靖安县| 岚皋县| 宜川县| 定西市| 肃北| 巧家县| 岐山县| 西宁市| 珠海市| 长丰县| 霸州市| 洛川县| 弋阳县| 广灵县| 蓬安县| 富锦市| 南江县| 长汀县| 弥勒县| 辽阳县| 万盛区| 河北区| 遂溪县|