神经网络优化-正则化&DropOut

本文介绍了神经网络优化中的正则化技术,重点讲解了L2正则化的实现,并强调了在更新参数时的注意事项。通过调整正则化参数,观察模型在训练数据和测试数据上的准确度,展示了正则化对防止过拟合的作用。此外,还探讨了Drop Out技术,阐述其工作原理和如何改善过拟合问题,提供了一种随机删除隐藏层单元的方法,减少模型对训练数据的过度依赖。并给出解决cost值为NAN问题的小技巧。
摘要由CSDN通过智能技术生成

 

实现正则化主要需要在两个地方做出修改:

1.cost计算(L2 regularization)

    #正则化
    n = len(parameters)//2
    cost_extra = 0
    for x in range(n):
        w = parameters['w'+str(x+1)]
        cost_extra += np.sum(np.multiply(w,w))
        
    cost_extra=np.squeeze(cost_extra)
    
    cost=cost+lambd/(2*m)*cost_extra

2.更新参数w

说明一下,这里修改的主要目的是要更新参数,实际上由于cost的改变,对其参数w求偏导得到的dw必然也会改变,然后再执行

w=w-dw的时候,把更改的dw带进来,但是这里代码实现的时候,用了原来的dw,然后直接w=w-dw-正则项

这样处理的原因是在得到dw值得时候,是从后往前反向传播的,而由于输出层与隐藏层使用的激活函数不同,所以在计算dw的

时候是分开计算的,在原本计算上加上正则项代码太冗余,所以把它放在更新时处理。

#只改变参数w的更新,b的不变 
parameters['w'+str(l+1)] = parameters['w'+str(l+1)]
     - alphs * grads['dw'+str(l+1)] 
     - alphs * (lambd/m) * parameters['w'+str(l+1)]

 

这需要改动的两个集中的地方,至于函数参数的改变自己调整一下,就不贴代码了。

 

 

在第一课第四周构建的模型的基础上,加上不同参数值得正则处理,看看情况如何

n=train_data_finalX.shape[0]
layer_
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值