亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

在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

积石山| 灯塔市| 航空| 景东| 水城县| 南靖县| 新巴尔虎左旗| 元朗区| 宜兰市| 靖远县| 武鸣县| 绵阳市| 青龙| 合作市| 江西省| 宜兰县| 巴东县| 梅州市| 丹巴县| 云阳县| 盐山县| 平乡县| 临海市| 綦江县| 宜川县| 大渡口区| 泽普县| 黔东| 勃利县| 武宁县| 新乐市| 西林县| 东安县| 荣成市| 治多县| 桂林市| 佛冈县| 闸北区| 鲁山县| 乃东县| 武山县|