当前位置: 代码迷 >> 综合 >> dropout-从零开始实现-代码详解
  详细解决方案

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

热度:55   发布时间:2024-01-09 05:54:48.0
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.]])
  相关解决方案