pytorch 入门【task05】PyTorch实现L1,L2正则化以及Dropout

本系列博客为跟随开源组织Datawhale学习小组的学习过程记录,任务内容及相关数据集为Datawhale开源组织搜集并无偿提供,饮水思源,特此宣传,欢迎关注Datawhale。
pytorch 入门【task05】PyTorch实现L1,L2正则化以及Dropout_第1张图片
1、了解知道Dropout原理
2、用代码实现正则化(L1、L2、Dropout)
3、Dropout的numpy实现
4、PyTorch中实现dropout

dropout原理
综上所述,训练深度神经网络的时候,总是会遇到两大缺点:(1)容易过拟合(2)费时Dropout可以比较有效的缓解过拟合的发生,在一定程度上达到正则化的效果。
Dropout可以作为训练深度神经网络的一种trick供选择。在每个训练批次中,通过忽略一半的特征检测器(让一半的隐层节点值为0),可以明显地减少过拟合现象。这种方式可以减少特征检测器(隐层节点)间的相互作用,检测器相互作用是指某些检测器依赖其他检测器才能发挥作用。
Dropout说的简单一点就是:我们在前向传播的时候,让某个神经元的激活值以一定的概率p停止工作,这样可以使模型泛化性更强,因为它不会太依赖某些局部的特征

用代码实现正则化(L1、L2、Dropout)

L2正则化:

from keras import regularizers
model.add(Dense(64, input_dim=64,
                kernel_regularizer=regularizers.l2(0.01)

keras实现dropout

from keras.layers.core import Dropout

model = Sequential([
 Dense(output_dim=hidden1_num_units, input_dim=input_num_units, activation='relu'),
 Dropout(0.25),

Dense(output_dim=output_num_units, input_dim=hidden5_num_units, activation='softmax'),
 ])

你可能感兴趣的:(pytorch)