欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Keras 實現加載預訓練模型并凍結網絡的層

 更新時間:2020年06月15日 10:11:58   作者:IFT_jason  
這篇文章主要介紹了Keras 實現加載預訓練模型并凍結網絡的層,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

在解決一個任務時,我會選擇加載預訓練模型并逐步fine-tune。比如,分類任務中,優(yōu)異的深度學習網絡有很多。

ResNet, VGG, Xception等等... 并且這些模型參數已經在imagenet數據集中訓練的很好了,可以直接拿過來用。

根據自己的任務,訓練一下最后的分類層即可得到比較好的結果。此時,就需要“凍結”預訓練模型的所有層,即這些層的權重永不會更新。

以Xception為例:

加載預訓練模型:

from tensorflow.python.keras.applications import Xception
model = Sequential()
model.add(Xception(include_top=False, pooling='avg', weights='imagenet'))
model.add(Dense(NUM_CLASS, activation='softmax'))

include_top = False : 不包含頂層的3個全鏈接網絡

weights : 加載預訓練權重

隨后,根據自己的分類任務加一層網絡即可。

網絡具體參數:

model.summary

得到兩個網絡層,第一層是xception層,第二層為分類層。

由于未凍結任何層,trainable params為:20, 811, 050

凍結網絡層:

由于第一層為xception,不想更新xception層的參數,可以加以下代碼:

model.layers[0].trainable = False

凍結預訓練模型中的層

如果想凍結xception中的部分層,可以如下操作:

from tensorflow.python.keras.applications import Xception
model = Sequential()
model.add(Xception(include_top=False, pooling='avg', weights='imagenet'))
model.add(Dense(NUM_CLASS, activation='softmax'))
for i, layer in enumerate(model.layers[0].layers):
 if i > 115:
 layer.trainable = True
 else:
 layer.trainable = False
 print(i, layer.name, layer.trainable)

加載所有預訓練模型的層

若想把xeption的所有層應用在訓練自己的數據,并改變分類數??梢匀缦虏僮鳎?/p>

model = Sequential()
model.add(Xception(include_top=True, weights=None, classes=NUM_CLASS))

* 如果想指定classes,有兩個條件:include_top:True, weights:None。否則無法指定classes

補充知識:如何利用預訓練模型進行模型微調(如凍結某些層,不同層設置不同學習率等)

由于預訓練模型權重和我們要訓練的數據集存在一定的差異,且需要訓練的數據集有大有小,所以進行模型微調、設置不同學習率就變得比較重要,下面主要分四種情況進行討論,錯誤之處或者不足之處還請大佬們指正。

(1)待訓練數據集較小,與預訓練模型數據集相似度較高時。例如待訓練數據集中數據存在于預訓練模型中時,不需要重新訓練模型,只需要修改最后一層輸出層即可。

(2)待訓練數據集較小,與預訓練模型數據集相似度較小時??梢詢鼋Y模型的前k層,重新模型的后n-k層。凍結模型的前k層,用于彌補數據集較小的問題。

(3)待訓練數據集較大,與預訓練模型數據集相似度較大時。采用預訓練模型會非常有效,保持模型結構不變和初始權重不變,對模型重新訓練

(4)待訓練數據集較大,與預訓練模型數據集相似度較小時。采用預訓練模型不會有太大的效果,可以使用預訓練模型或者不使用預訓練模型,然后進行重新訓練。

以上這篇Keras 實現加載預訓練模型并凍結網絡的層就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • python人工智能自定義求導tf_diffs詳解

    python人工智能自定義求導tf_diffs詳解

    這篇文章主要為大家介紹了python人工智能自定義求導tf_diffs詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-07-07
  • python遞歸函數求n的階乘,優(yōu)缺點及遞歸次數設置方式

    python遞歸函數求n的階乘,優(yōu)缺點及遞歸次數設置方式

    這篇文章主要介紹了python遞歸函數求n的階乘,優(yōu)缺點及遞歸次數設置方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-04-04
  • PyQt5 QLineEdit輸入的子網字符串校驗QRegExp實現

    PyQt5 QLineEdit輸入的子網字符串校驗QRegExp實現

    這篇文章主要介紹了PyQt5 QLineEdit輸入的子網字符串校驗QRegExp實現,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-04-04
  • 查看Python依賴包及其版本號信息的方法

    查看Python依賴包及其版本號信息的方法

    今天小編就為大家分享一篇查看Python依賴包及其版本號信息的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-08-08
  • Python中pygame安裝方法圖文詳解

    Python中pygame安裝方法圖文詳解

    這篇文章主要介紹了Python中pygame安裝方法,結合圖文說明,較為詳細的分析總結了Python中pygame的下載及安裝調試詳細步驟,需要的朋友可以參考下
    2015-11-11
  • PyCharm2020.3.2安裝超詳細教程

    PyCharm2020.3.2安裝超詳細教程

    這篇文章主要介紹了PyCharm2020.3.2安裝,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-02-02
  • 詳解python metaclass(元類)

    詳解python metaclass(元類)

    這篇文章主要介紹了python metaclass(元類)的相關資料,幫助大家更好的理解和學習,感興趣的朋友可以了解下
    2020-08-08
  • Python合并兩個字典的常用方法與效率比較

    Python合并兩個字典的常用方法與效率比較

    這篇文章主要介紹了Python合并兩個字典的常用方法與效率比較,實例分析并對比了Python合并字典的常用方法,需要的朋友可以參考下
    2015-06-06
  • 一篇文章看懂python如何執(zhí)行cmd命令

    一篇文章看懂python如何執(zhí)行cmd命令

    這篇文章主要給大家介紹了關于如何通過一篇文章看懂python如何執(zhí)行cmd命令的相關資料,在Python中可以使用多種方法執(zhí)行cmd命令,文中通過代碼示例將每種方法都介紹的非常詳細,需要的朋友可以參考下
    2023-09-09
  • 基于python實現微信收紅包自動化測試腳本(測試用例)

    基于python實現微信收紅包自動化測試腳本(測試用例)

    這篇文章主要介紹了基于python實現微信收紅包自動化測試腳本,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2021-07-07

最新評論