舉個例子,假如說要建立乙個貓咪檢測器,用來檢測寵物貓
假如兩隻貓叫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 資料集,它...