小試牛刀:用貓狗識別來練練手(只用了 2000 數據來訓練)
ps: 貓狗識別拿來做新算/想法的嘗試,也是一個挺不錯的選擇
怎麼能少了實現代碼:https://github.com/Azure-Sky-L/Deep-Learning-with-Python/blob/master/CatVsDog.ipynb
通過進一步使用正則化方法以及調節網絡參數(比如每個卷積層的過濾器個數或網絡中的層數),你可以得到更高的精度,可以達到 86% 或 87%。但只靠從頭開始訓練自己的卷積神經網絡,再想提高精度就十分困難,因爲可用的數據太少。想要在這個問題上進一步提高精度,下一步需要使用預訓練的模型
使用預訓練網絡有兩種方法:特徵提取(feature extraction)和微調模型(fine-tuning)
使用預訓練網絡,不使用數據增強的快速特徵提取,驗證精度達到了約 90%,比從頭開始訓練的小型模型效果要好得多。但從圖中也可以看出,雖然 dropout 比率相當大,但模型幾乎從一開始就過擬合。這是因爲本方法沒有使用數據增強,而數據增強對防止小型圖像數據集的過擬合非常重要
最終我們得到了 93.79% 的測試精度,注意我們只用一小部分訓練數據(約 10%), 訓練 20 000 個樣本與訓練 2000 個樣本是有很大差別的