cnn训练技巧1

cnn调参技巧记录,好的参数不光可以加速模型收敛,而且可以有效的避免很多错误。当然在很多简单任务中可能完全随机的模型初始参数,简单的一些建议学习率以及动量都可以得到一个比较满意的结果,比如单一,简单的降质模型下的图像生成,类别简单少量的一些分类任务等,不好的初始化参数是可以应对简单任务的。但是对于复杂任务就很难了,因为初始化参数选择的不好,导致结果十分不可控。因为不好的初始化参数导致结果很不可靠,不管是loss还是估计值都不是预期的结果,所以很麻烦。比如差得模型参数,使得估计结果跟label差的很远,那么导致你不好去控制动量以及学习率等参数,这些参数不可控之后,中间训练结果就完全不好分析,比如loss的震荡,精度的长时间不提升。

所以,首先药确定比较靠谱的模型初始化参数,改模型参数需要得到的结果尽量跟label分布接近或者说靠近。

当有了好的模型初始化参数之后,那么就需要根据loss的反馈来确认好的学习率和动量一些单参数,因为这些参数不好同样会导致结果很不可控,好的学习率和动量必须要将模型在训练过程中的结果控制在label的分布下,或者跟label的分布类似。而且还要有鲁棒性,使得模型参数不能因为少量异常或者极端数据干扰模型参数,也就是说在异常数据下,学习率和动量不能使得模型参数变化过大,这样同样会导致估计结果震荡,或者长时间精度不提升甚至下降。

当然有了好的参数,那么loss也需要考虑,因为loss不能变化太震荡,导致训练结果震荡,迟迟找不到正确的下降梯度方向,最合理的就是根据总体反馈将loss进行归一化,当然这个跟样本分布有关系。

训练过程有了那就是优化方法的选择问题,有很多文献说的是推荐sgd,目前个人经验也是sgd相对更好调参,结果更可控,所以能很好的选择参数。adam这样的结果不太好理解,因为对adam不熟悉,以后希望对各种优化方法做一个系统的学习在分享!

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当使用Torch进行卷积神经网络(CNN训练时,如果训练集中的图片数量较少,会存在一些挑战和问题。以下是一些可能的解决方案和建议: 1. 数据增强(Data Augmentation):通过应用一系列的随机变换(如旋转、翻转、平移、缩放、裁剪等),可以生成更多的训练样本。这样可以扩大数据集的规模,帮助模型更好地学习图像的不同变体。 2. 迁移学习(Transfer Learning):如果可以找到一个与目标任务相似的大型数据集,可以使用预训练CNN模型,将模型参数初始化为在大型数据集上已经训练好的参数。然后,可以仅仅微调这些参数,以适应特定的小样本集。这样可以利用大量的预训练数据,提高模型在小样本集上的性能。 3. 知识蒸馏(Knowledge Distillation):通过训练一个大型的模型,并将其输出作为小样本集的标签,在小样本集上再次训练一个较小的模型。这样,小模型可以利用大模型的知识来提高性能。 4. 数据合成(Data Synthesis):如果无法获取更多真实的训练数据,可以考虑利用合成数据来增加数据集的规模。例如,利用图像编辑软件生成虚拟的样本,或者使用生成对抗网络(GAN)生成合成的图像。 5. 主动学习(Active Learning):以一种交互式的方式训练模型,通过选择性地标记具有较高不确定性的样本来快速构建一个更大的训练集。这样可以逐步增加训练数据,并提升模型性能。 总之,尽管CNN在小样本集上的训练可能会面临挑战,但借助合适的技巧和策略,我们可以最大限度地利用现有的样本数据,并提高模型的性能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值