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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Django(39)使用redis配置缓存[通俗易懂]

    Django(39)使用redis配置缓存[通俗易懂]前言动态网站的基本权衡是,它们是动态的。每次用户请求页面时,Web服务器都会进行各种计算-从数据库查询到模板呈现再到业务逻辑-以创建站点访问者看到的页面。从处理开销的角度来看,这比标准的文件

    2022年7月31日
    13
  • C# 项目没有.sln文件的解决办法:

    C# 项目没有.sln文件的解决办法:什么是sln文件?sln文件开发中使用的解决方案文件,使用解决方案文件(后缀为sln的文件)表示一个项目组,他通常包含一个项目中所有的工程文件信息。包括文件版本,工程信息,全局设置,通过打开sln文件就可以加载整个项目.但是我新建的一个项目里面没有Sln文件,该如何打开整个项目?解决办法:打开VS,点击新建项目,同时会生成一个解决方法,然后往这个解决方案里面添加现有项目,注意添加的是.cspro

    2022年5月3日
    183
  • 一个服务器上运行多个tomcat,显示总启动某一个特定tomcat

    一个服务器上运行多个tomcat,显示总启动某一个特定tomcat

    2021年7月17日
    71
  • 初识DB4O「建议收藏」

    初识DB4O「建议收藏」   DB4O?   新出的OODBMS~取谐音DBforO。一个优秀的OODBMS解决方案,它出现的定位就是为了开发嵌入式和小型应用,同HSQLDB的定位相仿。不过DB4O的的优点则是,本身是OODBMS,那么对它的操作自然就是基于OO的,同Hiberante一样,但是Hiberante是ORM解决方案,而DB4O则是原生OODBMS方案。看看下面的例子一个同Hibernate相同的P…

    2022年7月21日
    13
  • 常见分布式文件存储介绍、选型比较、架构设计

    常见分布式文件存储介绍、选型比较、架构设计Hello,我是瓜哥:之前在进行对接存储项目的时候,对公司内部使用的文件系统进行了梳理,当前公司内部使用的文件系统有GlusterFS,FastDFS等,由于文件系统在海量小文件和高并发之下性能急剧下降,性能遭遇瓶颈,因此打算建设分布式对象存储平台。下面对市面上比较流行的非结构化文件存储产品进行相关整理和比较。分布式文件存储的来源在这个数据爆炸的时代,产生的数据量不断地在攀升,从GB,…

    2022年6月10日
    46
  • leetcode happy number

    leetcode happy number

    2021年9月10日
    81

发表回复

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

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