dropout-从零开始实现-代码详解

import torch
from torch import nn
from d2l import torch as d2l
def dropout_layer(x,dropout):
    assert 0 <= dropout <= 1 # 检查条件,如果dropout 不在(0,1)之间就终止条件
    if dropout == 0:
        return x 
    if dropout == 1:
        return torch.zeros_like(x)
    mask = (torch.Tensor(x.shape).uniform_(0,1)> dropout).float()
    return mask * x /(1.0-dropout) # 以概率 dropout置零数据,其余变量放大以保证期望不变
m = torch.arange(16,dtype=torch.float).reshape((2,8))
print(m)
print(dropout_layer(m,0.0))
print(dropout_layer(m,1.0))
print(dropout_layer(m,0.8))
tensor([[ 0.,  1.,  2.,  3.,  4.,  5.,  6.,  7.],
        [ 8.,  9., 10., 11., 12., 13., 14., 15.]])
tensor([[ 0.,  1.,  2.,  3.,  4.,  5.,  6.,  7.],
        [ 8.,  9., 10., 11., 12., 13., 14., 15.]])
tensor([[0., 0., 0., 0., 0., 0., 0., 0.],
        [0., 0., 0., 0., 0., 0., 0., 0.]])
tensor([[ 0.,  0.,  0., 15., 20., 25.,  0.,  0.],
        [40.,  0.,  0.,  0.,  0.,  0.,  0., 75.]])
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值