深度学习——dropout随机失活
Dropout正则化
在神经网络中模型参数较多,在数据量不足的情况下,很容易过拟合。Dropout(随机失活)是一个简单有效的正则化方法。
- 在训练过程中,Dropout的实现是让神经元以超参数\(p\)的概率停止工作或者激活被置为0,未被置为0的进行缩放,缩放比例为\(1/(1-p)\)。训练过程可以认为是对完整的神经网络的一些子集进行训练,每次基于输入数据只更新子网络的参数。
- 在测试过程中,随机失活不起作用。
代码实现
导包
import torch
import torch.nn as nn
1.定义函数,演示:随机失活(DropOut)
def dm01():
# 1. 创建隐藏层输出结果
t1 = torch.randint(0,10,size=(1,4)).float()
print(f't1:{t1}')
# 2. 进行下一层 加权求和,激活函数计算.
# 2.1 创建全连接层(充当线性层)
# 参1:输入特征维度;参2:输出特征维度
linear1 = nn.Linear(4,5)
# 2.2 加权求和
l1 = linear1(t1)
print(f'l1:{l1}')
# 2.3 激活函数
output = torch.relu(l1)
print(f'output:{output}')
# 3. 对激活值进行随机失活dropout处理 ——> 只有训练阶段有,测试阶段没有
dropout = nn.Dropout(p=0.5) # 每个神经元都有40%的概率被kill
d1 = dropout(t1)
print(f'd1:{d1}') # 未被失活的进行缩放,缩放比例为 1 / (1 - p)
2.测试
dm01()

浙公网安备 33010602011771号