1. 程式人生 > >tensorflow下基於alexnet的遷移學習

tensorflow下基於alexnet的遷移學習

環境:
anaconda5+python3.6+tensorflow1.8.0(?)

背景知識請閱讀這篇部落格

開始正文

step1 將預訓練的alexnet從caffe轉換至tensorflow
#1 alexnet.py 定義原始alex網路的class
#2 caff_classes.py 原始alex網路在caffe中的分類類別的class
#3 bvlc_alexnet.npy 從caffe中的alexnet儲存轉換出來的引數檔案,儲存了重建網路所需的weight和bias等值
#4 myalexnet_forward_newtf.py 從caffe轉換到tensorflow後的原始alex網路的分類測試模型,用以驗證載入的模型引數是否有效
#5 test images 儲存了一些可以直接用於測試分類效果的圖片,分類時拷貝相應圖片至python檔案目錄下 step2 微調網路(遷移) #5 finetune.py 重新微調的alexnet,使之適用於自己的應用 #6 datagenerator.py 用於生成微調所用的資料 其他參考 #7 407_transfer_learning.py 莫煩老師的遷移學習教程,之後介紹 #8 vgg16.npy file7所需的預訓練模型引數,同file3
  • step1操作
    只需要將提到的檔案放在同一目錄下,在spyder中執行myalexnet_forward_newtf.py即可。依賴的包沒有裝齊全的話可以回遇到一些error,根據提示自行百度可以理解,然後pip install 相應的包。可以會遇到連結超時無法安裝的問題,這時候一般是pip映象被牆了,可以自行百度 “pip國內源” 相應解決。
    輸出結果是這樣的:
    這裡寫圖片描述


    測試的是dog2和zebra,狗和斑馬。上圖中的分類結果是前五的分類結果。可以看出dog2的情況不太好,因為特徵可能不太明顯;而斑馬的情況很好,個人覺得是斑馬本身的特徵就很明顯,所分類結果相對更準確一點。個人也驗證了原參考部落格中的三張驗證圖片,並不能達到這麼好的效果,也不知到為什麼。
    這裡寫圖片描述

  • step2操作
    之後再更