import torch
import torch.nn as nn
import torch.autograd as autograd
m = nn.Dropout(p=0.5)
n = nn.Dropout2d(p=0.5)
input = autograd.Variable(torch.randn(1, 2, 6, 3)) ## 对dim=1维进行随机置为0
print(m(input))
print('****************************************************')
print(n(input))

下面的都是错误解释和错误示范,没有删除的原因是留下来进行对比,希望不要犯这类错误
# -*- coding: utf-8 -*-
import torch
import torch.nn as nn
import torch.autograd as autograd
m = nn.Dropout(p=0.5)
n = nn.Dropout2d(p=0.5)
input = autograd.Variable(torch.randn(2, 6, 3)) ## 对dim=1维进行随机置为0
print(m(input))
print('****************************************************')
print(n(input))
结果是:

可以看到torch.nn.Dropout对所有元素中每个元素按照概率0.5更改为零, 绿色椭圆,
而torch.nn.Dropout2d是对每个通道按照概率0.5置为0, 红色方框内
注:我只是圈除了部分

本文探讨了torch.nn.Dropout与torch.nn.Dropout2d的区别,指出Dropout是在所有元素中按概率0.5随机设置为零,而Dropout2d则针对每个通道按同样概率置零。通过实例解析,强调了两者在处理方式上的不同。
最低0.47元/天 解锁文章
428

被折叠的 条评论
为什么被折叠?



