作者thefggeuck (eggggg)
看板DataScience
标题[问题] CNN无法收敛
时间Wed Oct 26 21:07:33 2022
ctrl + y 可以删除一整行,请将不需要的内容删除
文章分类提示:
- 问题: 当你想要问问题时,请使用这个类别。
- 讨论: 当你自己已经有答案,但是也想听听版友意见时。
- 情报: 当你看到消息时,请使用这个类别。
根据板规规定,做适当的转换,以及摘录重要文意。
- 心得: 当你自己想要分享经验时,请使用这个类别。
(回答并非义务,所以当有人回答时,哪怕句谢谢也好,多多回应,大E可编辑文章)
可以试着把程式码用网站贴出来唷 https://pastebin.com/
(如果用不到以下框架,如观念问题请自行视情况删除作业系统,使用工具等项目)
作业系统:(ex:mac,win10,win8,win7,linux,etc...)
win10
问题类别:(ex:ML,SVM,RL,DL,RNN,CNN,NLP,BD,Vis,etc...)
CNN
使用工具:(ex:python,Java,C++,tensorflow,keras,MATLAB,etc...)
Python
问题内容:
目前的研究是要辨认时频图
目标是要分类出两种类别
现在选择使用的架构是EfficientNet B3
搭配transfer learning做训练
时频图输入时有做标准化
训练资料有28000
Train跟Validation的比例为0.8、0.2
在fit的过程train很快就收敛了
在Validation的部分完全没办法收敛
所以合理怀疑时overfitting
目前想不到合适的解决办法
虽然最後测试的准确度有86%
但是感觉完全是蒙到的
想请问板上的前辈有什麽建议?
https://i.imgur.com/i1lRjCv.jpg
https://i.imgur.com/ZPaYBx4.jpg
https://i.imgur.com/UrHO7R5.jpg
https://i.imgur.com/BkKPy7Z.jpg
https://i.imgur.com/YI6kNUV.jpg
https://i.imgur.com/8RWVVuw.jpg
https://i.imgur.com/KLoA3MG.jpghttps://
i.imgur.com/A30vu0q.jpg
https://i.imgur.com/QuebHiL.jpg
-----
Sent from JPTT on my iPhone
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 223.137.133.251 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/DataScience/M.1666789658.A.ABC.html
1F:→ thefggeuck: 补上accuracy 10/26 21:08
3F:→ thefggeuck: 麻烦各位前辈给我一些指点 10/26 21:38
4F:→ chang1248w: efficient net原本train在哪里? 10/26 22:00
5F:→ chang1248w: 你原本的toy model有这样的问题吗 10/26 22:07
6F:→ chang1248w: 另外testing在什麽样的集合上做? 10/26 22:09
7F:→ chang1248w: 好奇问个,时频图怎麽会有rgb 10/26 22:12
8F:→ thefggeuck: Train是用模拟的方式做试题边界不反射的讯号 10/26 22:15
9F:→ thefggeuck: ,再加上不反射边界不反射讯号加上杂讯。 10/26 22:15
10F:→ thefggeuck: Test是用模拟实验讯号,边界有反射的讯号。 10/26 22:15
11F:→ thefggeuck: 时频图的颜色我是用Matlab处理使用的colormap是用jet 10/26 22:16
12F:→ thefggeuck: 补充一下,原本有使用过vgg16的模型做训练,但是测试 10/26 22:18
13F:→ thefggeuck: 结果最好的是EfficientNet B3 10/26 22:18
14F:→ chang1248w: 最下面留一层hidden layer就好,然後试试看第一个。 10/26 22:33
15F:→ chang1248w: epoch之後unfreeze整个模型 10/26 22:33
16F:→ thefggeuck: 楼上的前辈指的第一个是什麽意思? 10/26 22:37
17F:→ chang1248w: 第一个epoch 10/26 23:04
18F:→ thefggeuck: 请问能给我更具体的操作说明吗? 10/27 11:01
19F:→ thefggeuck: 我算是这方面的新手 10/27 11:01
20F:→ thefggeuck: 谢谢 10/27 11:01
21F:→ chang1248w: 我怀疑你的domain和imagenet 差太大,导致模型解出来 10/27 11:39
22F:→ chang1248w: 的特徵多半和预测没什麽关系,再叠上dropout造成模型 10/27 11:39
23F:→ chang1248w: 在决策时没有稳定的共识 10/27 11:39
24F:→ chang1248w: 另外dropout不建议和batch normalization 连在一起使 10/27 11:42
25F:→ chang1248w: 用 10/27 11:42
27F:→ chang1248w: 你可以先试试看把dropout拿掉,或者把mlp调整成 10/27 11:45
28F:→ chang1248w: dense-bn-relu+dropout 10/27 11:45
29F:→ chang1248w: 没帮助再试整个模型上的fine-tuning 10/27 11:47
30F:→ chang1248w: 具体步骤是你现在的方法只train一个epoch,储存整个 10/27 11:50
31F:→ chang1248w: 模型的参数,把整个模型都设成trainable,再complie 10/27 11:50
32F:→ chang1248w: 模型一次,载入刚刚训练过一个epoch的参数,继续trai 10/27 11:50
33F:→ chang1248w: n 10/27 11:50
34F:→ chang1248w: 你可以在.fit之前呼叫. summary 来约略的检查模型的 10/27 11:52
35F:→ chang1248w: 参数有没有成功切换至trainable 10/27 11:52
36F:→ chang1248w: 最後,一般在fine-tuning的时候会加上L2 regularizer 10/27 11:55
37F:→ chang1248w: 但是这东西遇上adam之类含有动量项的算法时,行为和 10/27 11:55
38F:→ chang1248w: 理论上应该给予的惩罚有所落差,因此有了adamW和sgdW 10/27 11:55
39F:→ chang1248w: 之类的更正版 10/27 11:55
40F:→ chang1248w: 你可以在tensorflow的扩充包,tensorflow-addons找到 10/27 11:56
41F:→ chang1248w: 它们 10/27 11:56
42F:→ chang1248w: validation抖的这麽厉害已经超出overfitting的范畴了 10/27 12:01
43F:→ chang1248w: 数量级差太多 10/27 12:01
44F:→ thefggeuck: 非常感谢前辈 我先尝试看看 10/27 12:12
45F:→ chang1248w: 能有几分作用我是不知道啦lol 10/27 12:36
46F:推 wuyiulin: 朝圣很会抖的 val 10/27 14:10
47F:→ thefggeuck: 这是改成dense-bn-relu-dropout的结果 10/27 17:24
48F:→ thefggeuck: Predict准确率72% 10/27 17:24
51F:→ chang1248w: 这看起来就是平常会看到的overfitting 10/27 19:01
52F:→ thefggeuck: 已经有照着前辈的方式操作了,先把trainable 关掉,训 10/28 01:37
53F:→ thefggeuck: 练一个epoch,再把模型变成可训练,接着上一个epoch的 10/28 01:37
54F:→ thefggeuck: 权重继续训练,但是出来的结果val 也是乱跳… 10/28 01:37
55F:→ chang1248w: 是像最上面那种泼漆似的洒脱,还是前几楼这种5%左右 10/28 03:26
56F:→ chang1248w: 的震荡? 10/28 03:26
57F:→ thefggeuck: 像一开始的那种泼漆式 10/28 08:58
58F:→ thefggeuck: 如果不使用迁移式学习,把所有的参数都打开,训练1000 10/28 08:59
59F:→ thefggeuck: 个epoch看看,效果会不会比较好? 10/28 08:59
60F:→ chang1248w: 我没想法,这要试了才知道 10/28 12:13
61F:→ chang1248w: 等等,你网路的最後一层怎麽是sigmoid 10/28 12:16
62F:→ chang1248w: sigmoid是给非零即一的binary classification 用的, 10/28 12:20
63F:→ chang1248w: 接在Binary cross entropy (BCE)後面,一般ce的形式 10/28 12:20
64F:→ chang1248w: 要用softmax当输出 10/28 12:20
65F:→ thefggeuck: 是的,最终需要的答案就是只有两个,不是0就是1 10/28 13:41
66F:→ chang1248w: 用sigmoid有可能会输出[1, 1],这是你要的? 10/28 14:44
67F:→ thefggeuck: 我要的答案是0或1 ,二分类 10/28 14:54
68F:→ chang1248w: 那最後一层的activation 就得用softmax 10/28 14:59
69F:→ chang1248w: 不然就只输出一个用sigmoid的node,然後loss用BCE 10/28 15:00
70F:→ thefggeuck: 那compile要用categorical cross entropy 吗?如果我 10/28 15:03
71F:→ thefggeuck: 选择用softmax 的话 10/28 15:03
72F:→ chang1248w: 要 10/28 15:14
73F:→ thefggeuck: 好的,谢谢,我现在尝试 10/28 15:17
74F:推 j840715: 你的试体很薄吗 有没有机会只拿暂态的时间段 不要被回波 11/03 07:57
75F:→ j840715: 干扰呢ˉ? 11/03 07:57
76F:→ chang1248w: 有没有回波对应该没什麽差,可以有回波和没有回波的 11/03 20:42
77F:→ chang1248w: 资料打散在一起,再切训练/测验集 11/03 20:42
78F:→ thefggeuck: 刚刚跟教授报告,他觉得是资料量不平均,0的部分9000 11/04 10:54
79F:→ thefggeuck: 笔、1的部分有19000笔,有可能是没有真正随机切分出来 11/04 10:54
80F:→ thefggeuck: ,不知道这种原因是有可能的吗? 11/04 10:54
81F:→ thefggeuck: 试题厚度20公分,我是用有拿波会反射的讯号当data,应 11/04 10:56
82F:→ thefggeuck: 该是不会影响。 11/04 10:56
83F:推 wuyiulin: 资料量不平均的问题用 Focal Loss 的 Alpha vector 11/06 01:54
84F:→ wuyiulin: 处理。 11/06 01:54
85F:→ wuyiulin: 简单来说就是去修一下 CE 11/06 01:54
86F:→ chang1248w: 怎麽我读到的focal loss是对样本难易度做调整 11/06 09:44
87F:→ wuyiulin: 你那个是 gamma , 前面那个 alpha 可以处理 data imba 11/06 14:55
88F:→ wuyiulin: lance 。 11/06 14:55
89F:→ chang1248w: 喔,那个不算focal loss 提出的吧,年初还有一篇後续 11/06 21:52
90F:→ chang1248w: 的polyloss 11/06 21:52
91F:推 j840715: 听起来好像是暂态的弹性波啊 11/07 09:49
92F:→ j840715: 如果训练只给他看用有限元素法模拟无边界的 得到时频图就 11/07 09:49
93F:→ j840715: 是没反射 11/07 09:49
94F:→ j840715: 测试的资料集如果都是有反射影响 那叠合就会因为距离边 11/07 09:49
95F:→ j840715: 界不同而不同 所以时间域特徵会直接变成杂讯 11/07 09:49
96F:→ j840715: 杂讯还要考虑是否在资料集中的期望值是0 11/07 09:49
97F:→ j840715: 如果硬要说有没有反射会一样 那不如就用fft 不用时频图了 11/07 09:49
98F:推 j840715: 所以感觉可以从切资料集品均一点这点着手 跟楼上大大说 11/07 09:57
99F:→ j840715: 的一样 打散处理 11/07 09:57
100F:→ thefggeuck: 我已经有把训练资料打散了,但是还没有解决问题。我想 11/10 12:52
101F:→ thefggeuck: 是训练资料不平均造成的。 11/10 12:52