pytorch dropout用法

pytorch dropout用法链接:https://www.zhihu.com/question/67209417/answer/302434279刚踩的坑,差点就哭出来了TT.—我明明加了一百个dropout,为什么结果一点都没变使用F.dropout(nn.functional.dropout)的时候需要设置它的training这个状态参数与模型整体的一致.比如: Cla…

大家好,又见面了,我是你们的朋友全栈君。

关于dropout改进的新技术分享:

dropout改进_jacke121的专栏-CSDN博客_dropout改进

链接:https://www.zhihu.com/question/67209417/answer/302434279

刚踩的坑, 差点就哭出来了TT. — 我明明加了一百个dropout, 为什么结果一点都没变

使用F.dropout ( nn.functional.dropout )的时候需要设置它的training这个状态参数与模型整体的一致.

比如:

Class DropoutFC(nn.Module):

def __init__(self):

super(DropoutFC, self).__init__()

self.fc = nn.Linear(100,20)


def forward(self, input):

out = self.fc(input)

out = F.dropout(out,training=self.training, p=0.5)

return out


Net = DropoutFC()

Net.train()


# train the Net

这段代码中的F.dropout实际上是没有任何用的, 因为它的training状态一直是默认值False. 由于F.dropout只是相当于引用的一个外部函数, 模型整体的training状态变化也不会引起F.dropout这个函数的training状态发生变化. 所以, 此处的out = F.dropout(out) 就是 out = out. Ref: https://github.com/pytorch/pytorch/blob/master/torch/nn/functional.py#L535

正确的使用方法如下, 将模型整体的training状态参数传入dropout函数

Class DropoutFC(nn.Module):

def __init__(self):

super(DropoutFC, self).__init__()

self.fc = nn.Linear(100,20)


def forward(self, input):

out = self.fc(input)

out = F.dropout(out, p=0.5, training=self.training)

return out


Net = DropoutFC()

Net.train()


# train the Net

​​​​

或者直接使用nn.Dropout() (nn.Dropout()实际上是对F.dropout的一个包装, 也将self.training传入了) Ref: https://github.com/pytorch/pytorch/blob/master/torch/nn/modules/dropout.py#L46

Class DropoutFC(nn.Module):

def __init__(self):

super(DropoutFC, self).__init__()

self.fc = nn.Linear(100,20)

self.dropout = nn.Dropout(p=0.5)


def forward(self, input):

out = self.fc(input)

out = self.dropout(out)

return out

Net = DropoutFC()

Net.train()

​​​​​

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/131129.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • java path环境变量_java配置环境变量

    java path环境变量_java配置环境变量前段时间因为windows10更新的缘故,系统越来越卡,任务管理器也闪退,试了各种方法都不管用,反而越改问题越多,乘着周末,昨天把系统重装了,现在记录一下配置java环境变量的过程。1.安装jdk,从官网下就行,我的是把原来的做了个备份,直接解压的。如下图2.记录下你要配置的jdk路径。右键此电脑,属性,点击高级系统设置,选择环境变量。3.现在就可以新建环境变量了。点击新建,变量名为JAVA_HO…

    2022年5月31日
    23
  • web前端node.js常用命令

    web前端node.js常用命令1、npm install moduleNames:安装Node模块安装完毕后会产生一个node_modules目录,其目录下就是安装的各个node模块。node的安装分为全局模式

    2022年7月1日
    20
  • lora协议不属于lpwan_哪种协议用于wan

    lora协议不属于lpwan_哪种协议用于wan考虑使用LoRaWAN部署您的物联网解决方案?倘若您正在开发用于工业或企业用途的专用网络解决方案,那么您需要了解此技术的一些限制(以及在许多情况下将为您提供更好服务的替代协议)。在本文中,我们将深入探讨:LoRa与LoRaWAN的区别LoRaWAN如何运作LoRaWANA,B和C类啁啾率,处理增益和正交性利用LoRaWAN构建专用网络的障碍另一种解决方案:SymphonyLinkLoRa与Lo…

    2022年10月7日
    3
  • Java开发手册之单元测试[通俗易懂]

    Java开发手册之单元测试[通俗易懂]Java开发手册之单元测试

    2022年4月22日
    52
  • java学的什么软件_java初学者用什么软件[通俗易懂]

    java学的什么软件_java初学者用什么软件[通俗易懂]Java初学者可以使用MyEclipse或eclipse以及记事本。随着学习的深入,相信你会逐渐明白,你会从中找到最合适的开发工具。java初学者使用什么软件Java初学者可以使用MyEclipse、eclipse或记事本。1对于初学者,不建议使用ide开发工具,如eclipse、MyEclipse、intellijidea和netbean。但是,您也可以使用这些。原因不推荐,不方便您了解java…

    2022年7月8日
    26
  • Corners检测「建议收藏」

    Corners检测「建议收藏」HarrisCorners角点检测使用harriscorners检测器:使用OpenCV函数voidcornerHarris(InputArraysrc,OutputArraydst,intblockSize,                intksize,doublek,

    2025年8月21日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号