PyTorch实现L1,L2正则化以及Dropout
打卡链接:https://shimo.im/docs/oguxG8woEwIU63Uc
—————————————————————————
Dropout原理:
训练时,设定一个dropout ratio = p,即每一个输出节点以概率 p 置0(不工作)。假设每一个输出都是相互独立的,每个输出都服从二项伯努利分布B(1-p),则大约认为训练时 只使用了 (1-p)比例的输出;
测试时,保留Dropout层的同时,将一张图片重复测试M次,取M次结果的平均作为最终结果。假如有N个节点,则可能的情况为R=2^N,如果M远小于R,则显然平均效果不好;如果M≈N,那么计算量就太大了。因此做一个近似:可以直接去掉Dropout层,将所有输出 都使用 起来,为此需要将尺度对齐,即比例缩小输出 r=r*(1-p)。
Dropout作为训练深度神经网络的一种trick供选择,在每个训练批次中,通过忽略一半的特征检测器(让一半的隐层节点值为0),可以明显地减少过拟合现象。这种方式可以减少特征检测器(隐层节点)间的相互作用,检测器相互作用是指某些检测器依赖其他检测器才能发挥作用。Dropout可以有效缓解过拟合现象,一定程度上达到正则化的效果。
参考:https://blog.csdn.net/zhangxiaotao66/article/details/89296945
https://github.com/xumajie/datawhale/tree/master/pytorch/task5
用代码实现正则化(L1、L2、Dropout)、Dropout的numpy实现:
参考:https://blog.csdn.net/zhangxiaotao66/article/details/89296945
PyTorch中实现dropout
PyTorch_05
最新推荐文章于 2024-08-21 03:42:35 发布