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


相关推荐

  • Linux终端工具_ubuntu终端命令大全

    Linux终端工具_ubuntu终端命令大全本文中,介绍了14款最佳Linux命令行终端工具,可以用来替代debian系的Linux原生终端。如果你每天需要花大量的时间使用Linux命令行,而且正在寻找一些可替代系统自带的老旧且乏味的终端软件,不妨看看这篇文章,或许能给你带来一些帮助。如果你跟我一样,整天要花大量的时间使用Linux命令行,而且正在寻找一些可替代系统自带的老旧且乏味的终端软件,那你真是找对了文章。我这里搜集了一些非常有趣的终端…

    2022年8月21日
    10
  • split 方法_subsequence和substring的区别

    split 方法_subsequence和substring的区别1,split方法split()方法用于把一个字符串分割成字符串数组。例如:数据中现在有这样一个结果128b8f730592cc8db33ea52985127d44,44bee6555822d8321d2d1a2c1ac3b2cf,b2f939f26e512934e165f3e784cc74ca,我需要把这个字符串变成数组 console.log(res.result.produc…

    2022年9月25日
    4
  • 怎么删除服务项

    怎么删除服务项

    2021年9月23日
    59
  • 手机怎么复制网页上不能复制的文字_如何复制网页上收费文档的文字

    手机怎么复制网页上不能复制的文字_如何复制网页上收费文档的文字们在浏览网页的时候,时常会觉得有的内容不错,想复制下来,却发现有的网页内容不能复制,今天就教大家如何解决这个问题。虽然可以通过禁用脚本或是“查看源文件”,在源文件代码中复制需要的文章。不过复制文章的时候会有很多用不着的符号和代码。这样的操作方法其实都不如使用八爪鱼方便快捷。下面就给大家介绍一下如何利用八爪鱼采集网页上不能复制。步骤一、下载八爪鱼软件并登陆1、打开htt…

    2022年10月13日
    3
  • windows下检出项目和提交项目

    windows下检出项目和提交项目

    2021年10月17日
    41
  • k8s安装使用_setup error怎么解决

    k8s安装使用_setup error怎么解决安装GPG秘钥:curlhttps://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg|sudoapt-keyadd-错误消失

    2022年10月10日
    2

发表回复

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

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