文献记载 使用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
转载自原文链接, 如需删除请联系管理员。
原文链接:FER实际训练过程记录 genki4k数据集,转载请注明来源!