文章目录
PyTorch 中的 dropout
1. Pytoch 说明文档官网 PyTorch documentation 链接
1.1. torch.nn
中的 dropout
1.1.1. torch.nn.Dropout (Python class, in Dropout)
将输入的每个数值按(伯努利分布)概率赋值为0。即部分数值赋值为0。
import torch
import torch.nn as nn
import torch.nn.functional as F
def run1nn():
input_ = torch.randn(4, 2)
m = nn.Dropout(p=0.5)
# m = nn.AlphaDropout(p=0.5)
output = m(input_)
print("input_ = \n", input_)
print("output = \n", output)
输出如下(部分数值赋值为0):
input_ =
tensor([[-1.1293, -1.2553],
[-0.7586, 0.3034],
[ 1.6672, -0.6755],
[-1.8980, 1.1677]])
output = # 部分数值赋值为0。
tensor([[-0.0000, -0.0000],
[-1.5172, 0.6068],
[ 0.0000, -0.0000],
[-3.7961, 0.0000]])
1.1.2. torch.nn.AlphaDropout (Python class, in AlphaDropout)
当输入数据满足均值为 0 的正太分布时,在将部分数值按(伯努利分布)概率赋值为0的同时,保持输出数据的概率分布与输入数据的概率分一致。即先将部分数值赋值为0,再调整所有数值的值来保证分布不变。
def run1nn():
input_ = torch.randn(4, 2)
# m = nn.Dropout(p=0.5)
m = nn.AlphaDropout(p=0.5)
output = m(input_)
print("input_ = \n", input_)
print("output = \n", output)
输出如下(先将部分数值赋值为0,再调整所有数值的值来保证分布不变):
input_ =
tensor([[-3.1806, 0.2888],