1. 程式人生 > >caffe學習筆記17-find-tuning微調學習

caffe學習筆記17-find-tuning微調學習

find-tuning

        對已有模型進行find-tuning(softmax層的變動,只需要微調),比如我們現在有一個1000類的分類模型,但目前我們的需求僅是20類,此時我們不需要重新訓練一個模型,只需要將最後一層換成20類的softmax層,然後使用已有資料對原模型進行fine-tuning即可。

1.Fine-tuning微調(train + solver.prototxt + caffemodel) 

 # 微調 CaffeNet 模型的權值以完成風格識別任務(style recognition)
./build/tools/caffe train -solver examples/finetuning_on_flickr_style/solver.prototxt -weights models/bvlc_reference_caffenet/bvlc_reference_caffenet.caffemodel
        注:(變動的層fc8需要改名字,不然還是原來的引數,caffenet結構的輸出層的類別數一定要大於我訓練集的類別數才可以收斂!)

        比如原來我把影象類別的label設定成1,2,3,改成0,1,2後,最後全連線層的轉出改成3就OK了。

2.style recognition調參策略

   1) we will change the name of the last layer form fc8 to fc8_flickr in our prototxt, it will begin training with random weights.

    2)decrease base_lr(初始學習率,在train_val.protxt檔案值中) and boost the lr_mult(區域性學習倍率,conv和fc層才有) on the newly introduced layer(fc8_flickr).

    3)set stepsize(solver.prototxt,迭代多少次就下降一次學習率) to a lower value. So the learning rate to go down faster

    4)So in the solver.prototxt,we can find the base_lr is 0.001 from 0.01,and the stepsize is become to 20000 from 100000.(重要)

          base_lr: 0.001~0.01 (不改小,loss容易輸出non)

          lr_mult: w:10,b:20

          stepsize: 20000~100000

3.進行微調訓練分類時,loss一直是87.3365,可能的原因是:
1.標籤的問題:
  imagelist中,影象分類的標籤label一定要從0開始,
  分類層的 num_output 和 標籤的值域 不符合:
a. 要知道imagenet是進行1000類的分類任務,我自己的資料是一個二分類,就一定要把最後‘fc8’InnerProduct的分類層的num_output: 2原來是1000,這個設成自己label的類別總數就可以。 
b. 但是注意同時要修改train.prototxt和deploy.prototxt兩個網路配置檔案中的num_output
2.可能是學習率太高了 
  另外如果是最初的迭代的loss很小,然後突然變成87.3365。如果是這樣,可以嘗試一下調低學習率,我開始學習率是0.1,後來調成了0.001,反正就是調小,可以多試幾次。

相關推薦

caffe學習筆記17-find-tuning微調學習

find-tuning:         對已有模型進行find-tuning(softmax層的變動,只需要微調),比如我們現在有一個1000類的分類模型,但目前我們的需求僅是20類,此時我們不需要重新訓練一個模型,只需要將最後一層換成20類的softmax層,然後使用

LR學習筆記17-Java虛擬用戶

變量 mage 過程 vuser jdk clas 發的 做出 -- 這個是對LR陌生的內容,好好學習主要學習內容如下: --認識Java虛擬用戶 --Java虛擬用戶的適用範圍 --腳本開發環境配置 --Java腳本開發基礎 1、認識Java虛擬用戶 (1)Java Vu

學習筆記(17)

學習筆記1.ping -c1 -W2 2秒沒有收到響應報則認為網絡不通,默認5秒2.seq 2 3 10(echo {2..10..3}) 3為步進值 3.for num in "/root/bin/*.sh"; do echo the filename is $num; done 支

吳恩達機器學習筆記 —— 17 推薦系統

htm 特征 問題 這就是 ref 圖片 系統 得出 工業 本章講述了推薦系統相關的知識,比如基於內容的推薦算法、基於協同過濾的推薦算法以及實踐中遇到的問題。 更多內容參考 機器學習&深度學習 推薦系統是機器學習在工業界應用最廣泛的方向,很多電子商務類、咨詢類的

java學習筆記(17)

1:Map(掌握) (1)將鍵對映到值的物件。一個對映不能包含重複的鍵;每個鍵最多隻能對映到一個值。 (2)Map和Collection的區別? A:Map 儲存的是鍵值對形式的元素,鍵唯一,值可以重複。夫妻對 B:Collection 儲存的是單獨出現的元素,子介面Set元素唯一,子介

Java多執行緒學習筆記17之Lock的使用

詳細程式碼見:github程式碼地址   本節內容: 1) Lock/ReentrantLock的newCondition()方法及Condition類/await、signal方法文件翻譯 2) Condition實現等待/通知使用(錯誤示例及正

Spring Cloud學習筆記17——天氣預報系統微服務使用 Feign

回顧遺留的三個TODO 資料採集微服務在天氣資料同步任務中,依賴於城市資料API微服務 天氣預報微服務查詢天氣資訊,依賴於天氣資料API微服務 天氣預報微服務提供的城市列表,依賴於城市資料API微服務 天氣預報系統微服務使用Feign msa-we

python學習筆記17:下載微信公眾號相關文章

目的:從零開始學自動化測試公眾號中下載“pytest"一系列文件 1、搜尋微訊號文章關鍵字搜尋 2、對搜尋結果前N頁進行解析,獲取文章標題和對應URL 主要使用的是requests和bs4中的Beautifulsoup Weixin.py import requests from

Angular6學習筆記17:在路由中傳引數和接收引數

傳引數 1.在需要傳引數的元件的類檔案(ts檔案)中,構造方法中,宣告物件: constructor(private route: Router) { } 2.在路由中設定引數(有三種方式) routerLink屬性 a.對於單一引數 <a [router

建構函式(C++學習筆記 17

一、建構函式 建構函式是屬於某一個類的 類是一種抽象的資料型別,它不佔儲存空間,不能容納具體的資料,因此在類宣告中不能給資料成員賦初值。 例如,下面的描述是錯誤的: class Complex{ double real=0; //錯誤,在類宣告中不能給資料成員

【機器學習筆記17】支援向量機

【參考資料】 【1】《統計學習方法》 基本概念 當訓練資料線性可分時,通過硬間隔最大化,學習一個線性的分類器,即線性可分支援向量機,又稱硬間隔支援向量機; 當訓練資料近似線性可分時,通過軟間隔(增加一個鬆弛因子)後學習一個線性的分類器,即軟間隔支援向量機;

《Oracle PL/SQL例項精講》學習筆記17——記錄(第二部分)

本章內容: 1. 記錄型別(使用基於表和基於遊標的記錄,使用使用者定義的記錄,瞭解記錄的相容性) 2. 巢狀記錄(即,包含其他記錄和集合的記錄) 3. 記錄集合 程式碼如下: 1. 使用巢

shell學習筆記find/xargs

一:知識背景   1.這兩個命令就是用來匹配出你在整個檔案系統中需要的目錄或者檔案,必須在root使用者下執行。   2.多數sh會採用find和xargs清理過期的日誌,這個最合適不過了 二:命令詳解 語法: find filepath -option 【-print  -exec -o

Python學習筆記17: 抽象類

抽象類:包含抽象方法的類,通常稱為ABC類 import abc 使用: 1.可以包含抽象方法,也可以包含具體方法 2.可以有方法也可以有屬性 3.不允許直接例項化 4.必須繼承才可以使用,且繼承的子類必須實現所有繼承來的抽象方法 5.假定子類沒有實現所有繼承的抽象方法,則子類也不能例項化 6

Java學習筆記17:Java中的getClass()方法

Getclass(): 返回此 Object 的執行時類。用的是誰的建構函式,返回的就是誰的型別。 參考: 1.getClass()方法 和 class()方法 https://blog.csdn.net/qq_36761831/article/details/80552485 一般

python學習筆記17(時間模組)

時間模組 時間的表示方式 格林尼治天文時間\世界協調時間(UTC):世界標準時間,北京時間等於UTC+8 夏令時(DST):是一種節約能源而人為規定時間制度,在夏季調快1個小時 時間的表示形式: 1、時間戳 以整型或浮點型表示時間的一個以秒為單位的時間間隔。代表當前時間與1970年1

Git 學習筆記 - 17 - Rebase

Git 學習筆記 - 17 - Rebase 注:本文參照的是廖雪峰老師的Git教程 概述: 之前有用到 git log --graph --pretty=oneline --abbrev-commit 命令去檢視分支變化的軌跡,我們可以看到整個軌跡是彎彎曲曲的,特別是經歷了多人

Shader學習筆記(17) 頂點偏移水面動畫

Shader"wx/water"{ Properties{ _MainTex("Main Tex",2D)="white"{} _Color("Color Tint",Col

C++學習筆記17 繼承

繼承: 面向物件中的繼承指類之間的父子關係  子類擁有父類的所有成員變數和成員函式  子類就是一種特殊的父類  子類物件可以當作父類物件使用  子類可以擁有父類沒有的方法和屬性 繼承時候的訪問級別設定會影響到成員的訪問級別 class Child: Parent

spring學習筆記(17)資料庫配置[1]spring資料連線池詳解

資料連線池 在spring中,常使用資料庫連線池來完成對資料庫的連線配置,類似於執行緒池的定義,資料庫連線池就是維護有一定數量資料庫連線的一個緩衝池,一方面,能夠即取即用,免去初始化的時間,另一方面,用完的資料連線會歸還到連線池中,這樣就免去了不必要的連線建立