简单dropout代码实现

主要内容:
简述Dropout的原理与代码实现

一、Dropout的代码实现:

参考文章:https://www.cnblogs.com/xiximayou/p/12720589.html

class Dropout(Layer):
    """A layer that randomly sets a fraction p of the output units of the previous layer
    to zero.
    Parameters:
    -----------
    p: float
        The probability that unit x is set to zero.
    """
    def __init__(self, p=0.2):
        self.p = p
        self._mask = None
        self.input_shape = None
        self.n_units = None
        self.pass_through = True
        self.trainable = True

    def forward_pass(self, X, training=True):
        c = (1 - self.p)
        if training:
            self._mask = np.random.uniform(size=X.shape) > self.p
            c = self._mask
        return X * c

    def backward_pass(self, accum_grad):
        return accum_grad * self._mask

    def output_shape(self):
        return self.input_shape
  1. 使用丢弃法应对过拟合,而丢弃法只在训练模型时使用。
  2. Pytorch Dropout说明 】训练过程中,根据选中率为P的贝努力分布,随机地使输入tensor对象中的一些值变成0。重要的是,dropout面向每个通道,独立地针对每个通道使用该贝努力分布在前向传播中随机选择元素清零;
    同时,训练期间,输出的元素(未被清零的元素)会乘以一个 1 / ( 1 − p ) 1/(1-p) 1/(1p)的因子实现缩放,这就意味着,对应的测试期间,模型仅计算对应元素在每个层对应参数的梯度值
  3. Dropout,是一种用于正则化和防止神经元的共同适应的有效的技术。
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值