1. 程式人生 > >FER實際訓練過程記錄 genki4k資料集

FER實際訓練過程記錄 genki4k資料集

文獻記載 使用RBF核的SVM在genki4k的test acc為93.2%

全連線神經網路

64*64解析度 2層

hide_size epoch train_acc test_acc
100 100 88 55
100 200 93 57.5
500 200 100 60

全連線層
全連線層2層,hide_size為100,訓練200個epoch即可達到較高的訓練準確率,測試準確率只有58%,訓練500個epoch圖形基本相同。hide_size為500時,很快訓練準確率達到100%,耗時更多而test acc僅提高到60%,如下圖
這裡寫圖片描述**
加入dropout=0.5,

hide_size epoch train_acc test_acc time
100 200 60 48.8 404s
100 2000 75 57 2600s

加入dropout防止過擬合,訓練2000epoch,訓練acc為75%,而實際上得到的test acc依然和不加dropout 200epoch的準確率差不多,是否說明經過2000epoch達到的model係數,已經是最優的?模型的可提升空間只能靠more data?

CNN

64*64解析度 2層Conv和Pool 兩層FC

(由於train_test_split的random種子不同,因而同等情況下,每組測試準確率存在一定差異)

patch_size epoch train_acc test_acc train_time
6 10 75 66 827s
5 10 80 60 480s
5 20 83 70 808s
5 100 100 73 3660s

這裡寫圖片描述
再將epoch加到100,當訓練到20epoch時,訓練準確率即達到100%,測試準確率72%,到100epoch,耗時3660s,測試準確率73%。
本想嘗試將所有訓練集資料帶入模型求一個整體訓練集的準確率,但因訓練集資料太多(n*64*64*3),維度太大,導致程式崩潰。
經過試驗,基本上25個epoch,即可達到訓練結果的視覺化冗餘,同全連線層一樣存在較嚴重的過擬合問題


加入dropout=0.5,結果如下,準確率甚至下降
patch_size epoch train_acc test_acc
5 25 60-70% 59.2

64*64解析度 3層Conv和Pool 兩層FC

patch_size epoch train_acc test_acc train_time 卷積層數 備註
5 20 83 70 808s 2
5 20 89 65.2 1230s 3
5 30 94.6 70 1369s 3 3層fc,random_state=1(含以下)
5 30 67 61.8 1322s 3 keep_prob=0.8
5 50 96.7 73.4 1960s 3 keep_prob=0.95
5 50 94.8 75.5 2357 3 keep_prob=0.9
5 50 88.1 70.5 2548 3 keep_prob=0.85
5 50 90.1 71 2005 3 keep_prob=0.88
5 50 97 77 3490 3 keep_prob=0.92
5 50 91.4 74.4 1964 3 keep_prob=0.92,random_state=0

Hog 深度神經網路(3層,h1=300,h2=100)

hog特徵提取,
hide1_size h2_size train_acc test_acc train_time
300 100 100 56 123s
這裡寫圖片描述