深度學習筆記(31) 遷移與增強

2021-09-25 03:42:46 字數 1964 閱讀 7399

舉個例子,假如說要建立乙個貓咪檢測器,用來檢測寵物貓

假如兩隻貓叫tigger和misty,還有一種情況是,兩者都不是

所以現在有乙個三分類問題,裡是tigger還是misty,或者都不是

忽略兩隻貓同時出現在一張裡的情況

舉個例子,imagenet資料集,它有1000個不同的類別

因此這個網路會有乙個softmax單元,它可以輸出1000個可能類別之一

可以去掉這個softmax層,建立自己的softmax單元

用來輸出tigger、misty和neither三個類別

就網路而言,建議把所有的層看作是凍結的,凍結網路中所有層的引數

只需要訓練和softmax層有關的引數

通過使用其他人預訓練的權重,很可能得到很好的效能,即使只有乙個小的資料集

事實上,取決於用的框架,它也許會有trainableparameter=0這樣的引數

對於這些前面的層,可能會設定這個引數

為了不訓練這些權重,有時也會有freeze=1這樣的引數

不同的深度學習程式設計框架有不同的方式,允許指定是否訓練特定層的權重

在這個例子中,只需要訓練softmax層的權重,把前面這些層的權重都凍結

另乙個技巧,也許對一些情況有用

由於前面的層都凍結了,相當於乙個固定的函式,不需要改變

因為不需要改變它,也不訓練它

取輸入影象x,然後把它對映到這層(softmax的前一層)的啟用函式

所以這個能加速訓練的技巧就是,如果先計算這一層,計算特徵或者啟用值

然後把它們存到硬碟裡,然後在此之上訓練softmax分類器

所以,儲存到硬碟或者說預計算方法的優點就是

不需要每次遍歷訓練集再重新計算這個啟用值了

因此如果任務只有乙個很小的資料集,可以這樣做

如果要有乙個更大的訓練集

這種情況,應該凍結更少的層,然後訓練後面的層

如果輸出層的類別不同,那麼需要構建自己的輸出單元,tigger、misty或者兩者都不是三個類別

有很多方式可以實現,可以取後面幾層的權重,用作初始化,然後梯度下降

或者可以直接去掉最後幾層,換成自己的隱藏單元和自己的softmax輸出層,這些方法值得一試

當下在計算機視覺方面,計算機視覺的主要問題是沒有辦法得到充足的資料

簡單的資料增強方法:

垂直映象對稱

隨機裁剪

旋轉

扭曲彩色轉換

常用的實現資料增強的方法是使用乙個執行緒或者是多執行緒

這些可以用來載入資料,實現變形失真

然後傳給其他的執行緒或者其他程序來訓練,可以並行實現

參考:

深度增強學習入門筆記(一)

知乎專欄智慧型單元的學習筆記,僅為自己學習所用,侵刪。openai的三個主要研究方向 1.深度生成模型 deep generative model 通過學習現有的資料生成新的資料。相關研究 1 otoro.net 學習文字自動生成新的文字 2 deep dream neural art 畫風遷移 3...

深度增強學習入門筆記(二)

知乎專欄智慧型單元的學習筆記,就真的只是一邊看一邊記的而已,僅為自己學習所用,侵刪。是增強學習領域最重要的乙個方程。使用價值函式進行決策就需要計算這個函式,那怎麼計算呢?bellman方程。簡而言之,bellman方程的作用 表明價值函式是可以迭代進行計算的。將價值函式的公式 a 表示,s代表狀態,...

深度學習 遷移學習

遷移學習 把公共的資料集的知識遷移到自己的問題上,即將已經訓練好的模型的一部分知識 網路結構 直接應用到另乙個類似模型中去 小資料集 利用遷移學習,應用其他研究者建立的模型和引數,用少量的資料僅訓練最後自定義的softmax網路。從而能夠在小資料集上達到很好的效果。例如 imagenet 資料集,它...