Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

模型训练详情 #35

Open
zzh-ecnu opened this issue Apr 3, 2020 · 14 comments
Open

模型训练详情 #35

zzh-ecnu opened this issue Apr 3, 2020 · 14 comments

Comments

@zzh-ecnu
Copy link

zzh-ecnu commented Apr 3, 2020

求教97%准确率模型的超参设置和数据集划分,谢谢了~

@zzh-ecnu
Copy link
Author

zzh-ecnu commented Apr 8, 2020

作者的model是一个五层CNN,经过多次调参,测试集准确率最高到50%。

和同学探讨之后,认为模型(五层CNN)过于简单(也可能我们调参不够好),于是我们将模型换为了34层的残差网络res34-net,达到了测试集上86%的准确率。

86% Setting:1W例训练集、1000例测试集、15-30个epoch、64大小batch_size、学习率0.0002,loss最终在0.001左右。

@zzh-ecnu
Copy link
Author

zzh-ecnu commented Apr 8, 2020

另外,作者的版本为CPU版本,改成GPU版本的跑起来会很快(如果有一块不错的显卡),欢迎大家把更高准确率的模型训练详情po在这里,一起学习,共同进步!

@bruceyanwee
Copy link

bruceyanwee commented Apr 12, 2020

作者的model是一个五层CNN,经过多次调参,测试集准确率最高到50%。

和同学探讨之后,认为模型(五层CNN)过于简单(也可能我们调参不够好),于是我们将模型换为了34层的残差网络res34-net,达到了测试集上86%的准确率。

86% Setting:1W例训练集、1000例测试集、15-30个epoch、64大小batch_size、学习率0.0002,loss最终在0.001左右。

我也是新手,才做了3天,
我的想法是,想从更简单的开始尝试,然后再慢慢改模型,3w的训练数据
简单模型是两层卷积+两层全连接
setting1:2个字符、3w训练、10 epoch、test 1k、acc:76%
setting2:4个字符、3w训练、12 epoch、test 1k、acc:20%
基本还没有调参经验
请教一下:1w的数据很容易过拟合,是因为模型太简单了吗?我其实就是把该项目的卷积层改到了2层

@CANVOLCANO
Copy link

作者的model是一个五层CNN,经过多次调参,测试集准确率最高到50%。

和同学探讨之后,认为模型(五层CNN)过于简单(也可能我们调参不够好),于是我们将模型换为了34层的残差网络res34-net,达到了测试集上86%的准确率。

86% Setting:1W例训练集、1000例测试集、15-30个epoch、64大小batch_size、学习率0.0002,loss最终在0.001左右。

请问你们用的loss也是MultiLabelSoftMarginLoss吗?只是把backbone换成ResNet34其他的都没动么?

@zzh-ecnu
Copy link
Author

zzh-ecnu commented Jun 11, 2020 via email

@CANVOLCANO
Copy link

没错,没有改动别的,只有模型层。

---------- 该邮件从移动设备发送
--------------原始邮件-------------- 发件人:"燦哲 "<[email protected]>; 发送时间:2020年6月11日(星期四) 中午11:11 收件人:"dee1024/pytorch-captcha-recognition" <[email protected]>; 抄送:"zzh "<[email protected]>;"Author "<[email protected]>; 主题:Re: [dee1024/pytorch-captcha-recognition] 模型训练详情 (#35) ----------------------------------- 作者的model是一个五层CNN,经过多次调参,测试集准确率最高到50%。 和同学探讨之后,认为模型(五层CNN)过于简单(也可能我们调参不够好),于是我们将模型换为了34层的残差网络res34-net,达到了测试集上86%的准确率。 86% Setting:1W例训练集、1000例测试集、15-30个epoch、64大小batch_size、学习率0.0002,loss最终在0.001左右。 请问你们用的loss也是MultiLabelSoftMarginLoss吗?只是把backbone换成ResNet34其他的都没动么? — You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub, or unsubscribe.

我们把作者的5层的模型改了下,在10万的training_set和1万的test_set上30个epoch后最后loss大概0.6,测试准确度大概76%.
改成resNet34+初始0.01的lr在50个epoch内用MultiStepLR分阶段下降三次0.01->0.001->0.0001->0.00001,最后loss似乎一直卡在0.11.
请问你们的resNet34是自己写的么?方便share一下吗?:)

@zzh-ecnu
Copy link
Author

没有,torch.nn里定义好的模型

@shicaiwei123
Copy link

训练数据10w,1k图片测试准确率96%

把作者CNN特征提取的dropout去掉,只留下Linear层的dropout,
多增加几层layer,但是保持图片尺寸衰减还是8倍,也就是,只有3个maxpooling层,
余弦学习率衰减,

@yingtao123
Copy link

作者的model是一个五层CNN,经过多次调参,测试集准确率最高到50%。

和同学探讨之后,认为模型(五层CNN)过于简单(也可能我们调参不够好),于是我们将模型换为了34层的残差网络res34-net,达到了测试集上86%的准确率。

86% Setting:1W例训练集、1000例测试集、15-30个epoch、64大小batch_size、学习率0.0002,loss最终在0.001左右。

感谢楼主,按照楼主方法,5个字符长度,1w训练集,500测试集完全用楼主参数精度只有22%。后来动态调整了lr,
精度达84%,调整如下 初始为 parser.add_argument("--learning_rate", type=float, default=0.001)
训练中调整如下
lr = opt.learning_rate * (0.1 ** (epoch // 10))
for param_group in optimizer.param_groups:
param_group['lr'] = lr

@zzh-ecnu
Copy link
Author

zzh-ecnu commented Dec 3, 2020

作者的model是一个五层CNN,经过多次调参,测试集准确率最高到50%。
和同学探讨之后,认为模型(五层CNN)过于简单(也可能我们调参不够好),于是我们将模型换为了34层的残差网络res34-net,达到了测试集上86%的准确率。
86% Setting:1W例训练集、1000例测试集、15-30个epoch、64大小batch_size、学习率0.0002,loss最终在0.001左右。

我也是新手,才做了3天,
我的想法是,想从更简单的开始尝试,然后再慢慢改模型,3w的训练数据
简单模型是两层卷积+两层全连接
setting1:2个字符、3w训练、10 epoch、test 1k、acc:76%
setting2:4个字符、3w训练、12 epoch、test 1k、acc:20%
基本还没有调参经验
请教一下:1w的数据很容易过拟合,是因为模型太简单了吗?我其实就是把该项目的卷积层改到了2层

模型简单只会欠拟合,目前这个情况看来是作者释放的模型超参有问题,具体改法你可以看看其他人的分享~

@zzh-ecnu
Copy link
Author

zzh-ecnu commented Dec 3, 2020

作者的model是一个五层CNN,经过多次调参,测试集准确率最高到50%。
和同学探讨之后,认为模型(五层CNN)过于简单(也可能我们调参不够好),于是我们将模型换为了34层的残差网络res34-net,达到了测试集上86%的准确率。
86% Setting:1W例训练集、1000例测试集、15-30个epoch、64大小batch_size、学习率0.0002,loss最终在0.001左右。

感谢楼主,按照楼主方法,5个字符长度,1w训练集,500测试集完全用楼主参数精度只有22%。后来动态调整了lr,
精度达84%,调整如下 初始为 parser.add_argument("--learning_rate", type=float, default=0.001)
训练中调整如下
lr = opt.learning_rate * (0.1 ** (epoch // 10))
for param_group in optimizer.param_groups:
param_group['lr'] = lr

感谢分享!

@zzh-ecnu
Copy link
Author

zzh-ecnu commented Dec 3, 2020

训练数据10w,1k图片测试准确率96%

把作者CNN特征提取的dropout去掉,只留下Linear层的dropout,
多增加几层layer,但是保持图片尺寸衰减还是8倍,也就是,只有3个maxpooling层,
余弦学习率衰减,

感谢分享!

@Vincent0102
Copy link

训练数据10w,1k图片测试准确率96%

把作者CNN特征提取的dropout去掉,只留下Linear层的dropout,
多增加几层layer,但是保持图片尺寸衰减还是8倍,也就是,只有3个maxpooling层,
余弦学习率衰减,

基于以上修改,20W training data, 2k test data, feature extract增加到7层,最后几层输出通道改128,lr=0.0002,epochs=150,batch_size=64。测试正确率在98.8%到99%之间

@WnQinm
Copy link

WnQinm commented Jan 30, 2024

作者的model是一个五层CNN,经过多次调参,测试集准确率最高到50%。

和同学探讨之后,认为模型(五层CNN)过于简单(也可能我们调参不够好),于是我们将模型换为了34层的残差网络res34-net,达到了测试集上86%的准确率。

86% Setting:1W例训练集、1000例测试集、15-30个epoch、64大小batch_size、学习率0.0002,loss最终在0.001左右。

训练集10w、测试集1000、epoch30、batch_size64、学习率0.0002, 我将模型的卷积层全部去掉,换成了pytorch官方预训练好的resent34,并将resnet最后一层的fc改为了作者模型倒数第二层的fc,将模型移至gpu上训练,30轮后损失在0.001上下,测试集准确率为96%左右

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

7 participants