层数比较深的网络训练技巧

 

  1.     监督性区分性分层训练

              遇见的 问题: 假如训练20层的网络,直接堆积网络,由于网络过于深入,每一层都会有误差(并且是小于1的值),这样可能会在回传的时候会导致梯度消失(连续累✖️越来越小),无法收敛,那么是如何训练的呢(很多情况都是由于初始数值不好导致)。

                解决方法:1. 进行分层训练,首先先抽7层隐层,然后后边直接接入一个到输出层的线性变换,先用部分数据训练这样的7层网络结构。

                                   2. 等到网络不再震荡之后再加7层隐层,使用训练数据训练14层网络,最后再加6层,训练。(一般20%-30%的数据进行训练)

                                   3. 最终使用全部数据+20层网络进行训练最终的结果

            核心思想:由于网络过于深直接训练不好训练,因此使用类似refine的机制(如果直接使用开源模型例如imagenet、resnet等,可以直接进心refine)

  1.    加入残差

             

      3.   中间加入损失函数

           

  1. 激活函数尽量不要使用sigmoid,尽量使用relu。

            解释:sigmoid函数会有两个饱和区(y的数值接近于1或者-1的时候,在饱和区的梯度接近于0,或者很小,很容易导致模型无法收敛)

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值