深度学习——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()
posted @ 2026-07-17 20:25  王新文  阅读(5)  评论(0)    收藏  举报