pytorch-captcha-recognition icon indicating copy to clipboard operation
pytorch-captcha-recognition copied to clipboard

模型训练详情

Open zzh-ecnu opened this issue 4 years ago • 14 comments

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

zzh-ecnu avatar Apr 03 '20 07:04 zzh-ecnu

作者的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 avatar Apr 08 '20 03:04 zzh-ecnu

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

zzh-ecnu avatar Apr 08 '20 03:04 zzh-ecnu

作者的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层

bruceyanwee avatar Apr 12 '20 08:04 bruceyanwee

作者的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其他的都没动么?

CANVOLCANO avatar Jun 11 '20 03:06 CANVOLCANO

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


该邮件从移动设备发送

--------------原始邮件-------------- 发件人:"燦哲 "<[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.

zzh-ecnu avatar Jun 11 '20 03:06 zzh-ecnu

没错,没有改动别的,只有模型层。 ---------- 该邮件从移动设备发送 --------------原始邮件-------------- 发件人:"燦哲 "<[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一下吗?:)

CANVOLCANO avatar Jun 16 '20 15:06 CANVOLCANO

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

zzh-ecnu avatar Jun 17 '20 11:06 zzh-ecnu

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

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

shicaiwei123 avatar Jun 30 '20 00:06 shicaiwei123

作者的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

yingtao123 avatar Jul 22 '20 07:07 yingtao123

作者的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 avatar Dec 03 '20 02:12 zzh-ecnu

作者的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 avatar Dec 03 '20 02:12 zzh-ecnu

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

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

感谢分享!

zzh-ecnu avatar Dec 03 '20 02:12 zzh-ecnu

训练数据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%之间

Vincent0102 avatar Jun 09 '21 01:06 Vincent0102

作者的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%左右

WnQinm avatar Jan 30 '24 18:01 WnQinm