1. 程式人生 > >北大人工智慧網課攻略[4]:基於VGG16的遷移學習

北大人工智慧網課攻略[4]:基於VGG16的遷移學習


個人程式如下:
連結: https://pan.baidu.com/s/1mi99CsgRvolkXUb-UoW3Gw 提取碼: kyrp


北大人工智慧網課考試二是訓練VGG16模型,並對老師給出的10張圖片進行識別。如果使用老師給出的已經訓練好的VGG16模型引數和呼叫程式,穩定滿分。該模型引數與VGG16論文當時提供的一致。
在這裡插入圖片描述之後我隨便玩了一下,原來我的頭像是persian cat,波斯貓80%概率,還有13%概率是安哥拉兔。
在這裡插入圖片描述
本題題目要求在使用自己程式設計訓練VGG16模型並呼叫模型識別。那麼問題來了,ILSVRC-2012資料集多大?僅訓練集138G,此時我的電腦硬碟是110G。所以說北大人工智慧網課想滿分,我得先買個伺服器吧。
買完後下載資料集。

https://blog.csdn.net/xingchengmeng/article/details/58135148
再安裝好GPU,編好程式就可以開始攻略了。

所以我決定現在做一個使用VGG16已有模型的遷移學習實踐。

斯坦福遷移學習解釋:http://cs231n.github.io/transfer-learning/
我首先使用莫煩的遷移學習程式開始修改,莫煩的遷移學習程式是使用vgg千種分類遷移到貓和老虎的長度判斷。在修改的時候我發現了一些問題。
如下程式:
在這裡插入圖片描述
這裡返回的resize_img應該是一個訓練batch,然而其實際值為一個1×224×224×3的陣列,即一張圖片:
在這裡插入圖片描述
這個非batch的情況在訓練程式中也顯示了出來:
在這裡插入圖片描述


如果這個是一個batch的話,輸入集的長度len(xs)應該是一次訓練的圖片數,如20這樣,然而這裡b_idx只有0和1,說明cat和tiger集各自只有一張圖片被帶進來訓練:
在這裡插入圖片描述
在修改完程式後,我將vgg16用於了之前的cifar-10分類問題,程式在上面,結果如圖。兩張結果都正確。
在這裡插入圖片描述