vgg16遷移學習實現
本文討論遷移學習,它是乙個非常強大的深度學習技術,在不同領域有很多應用。動機很簡單,可以打個比方來解釋。假設想學習一種新的語言,比如西班牙語,那麼從已經掌握的另一種語言(比如英語)學起,可能是有用的。
按照這種思路,計算機視覺研究人員通常使用預訓練 cnn 來生成新任務的表示,其中資料集可能不夠大,無法從頭開始訓練整個 cnn。另乙個常見的策略是採用在 imagenet 上預訓練好的網路,然後通過微調整個網路來適應新任務。
這裡提出的例子受啟於
francois chollet 寫的關於 keras 的乙個非常有名的部落格(
這個想法是使用在像 imagenet 這樣的大型資料集上預先訓練的 vgg16 網路。注意,訓練的計算量可能相當大,因此使用已經預訓練的網路是有意義的:
圖 1. 乙個 vgg16 網路
匯入稍後將用於計算的 keras 模組,並儲存一些有用的常量:
載入 imagenet 上預訓練的 vgg16 網路,省略最後一層,因為這裡將在預建的 vgg16 網路的頂部新增自定義分類網路,並替換原來 vgg16 的分類層:
上述**的輸出如下:
凍結預訓練的 vgg16 網路的一定數量的較低層。在這裡決定凍結最前面的 15 層:
為了分類,新增一組自定義的頂層:
自定義網路應該單獨進行預訓練,為了簡單起見,這裡省略了這部分,將此任務交給讀者:
建立乙個新的網路,這是預訓練的 vgg16 網路和預訓練的定製網路的組合體:
重新訓練組合的新模型,仍然保持 vgg16 的 15 個最低層處於凍結狀態。在這個特定的例子中,也使用 image augumentator 來增強訓練集:
在組合網路上評估結果:
vgg16 網路進行遷移學習,該網路已經在 imagenet 上完成了學習,可以將此學習應用到新的特定領域,通過微調去完成分類任務。
根據具體的分類任務,有幾條經驗法則需要考慮:
可執行**
base_model.layers:layer.trainable=false 凍結所有低層引數。
可執行**
model.layers:layer.trainable=true 取消凍結所有低層的引數。
VGG16學習筆記
vgg16 一 摘要 二 convnet的配置 所有隱藏層之後,都配有relu rectified linear uint 修正線性單元 vgg 16中的16指的是在這個網路中包含16個卷積層和全連線層。此外還有vgg 19,由於vgg 16和vgg 19的表現幾乎誤無差,且vgg 16的引數較vg...
VGG16模型理解
vgg16作為很入門的cnn網路,同時也有很多基於vgg16的改進網路,比如用於語義分割的segnet等。1 輸入224x224x3的,經過64個卷積核的兩次卷積後,採用一次pooling。經過第一次卷積後,c1有 3x3x3 個可訓練引數 2 之後又經過兩次128的卷積核卷積之後,採用一次pool...
vgg16測試模型的實現
vgg 16又稱為oxfordnet,是由牛津視覺幾何組 visual geometry group 開發的卷積神經網路結構。vgg在2014年的 ilsvrc localization and classification 兩個問題上分別取得了第一名和第二名 原標題 very deep convo...