你可以將某些層變更為不可訓練層,只訓練較靠近輸出的部分,特別是使用具有上千萬甚至億以上權重的模型,可以節省不少時間與運算資源,但此方法請不要使用在非遷移學習上,不對隨機初始化的權重做學習是不好的。
for layer in model.layers[:14]:
layer.trainable = False
此動作關閉前14層,讓我們只訓練較靠近輸出的那幾層,你可以改變其數量,針對你的運算資源做調配,另外要關閉Functional模型的層時請注意,這種簡單從上面的層開始關下來的方法,請盡量只在Sequential方式搭建的模型使用,在Keras的預訓練模型裡的VGG16、VGG19即是,以下畫圖來說明為什麼。
使用Keras的plot_model功能需要的套件並沒有隨Tensorflow一併安裝,使用Colab的同學可以跳過安裝步驟,在本機使用環境的同學需安裝套件,請下載graphviz將裡面的bin資料夾解壓縮,跟你的ipynb檔案放在同一個資料夾,然後安裝以下套件。
pip install graphviz
pip install pydot