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


相关推荐

  • 如何查看Vue项目vue的版本号

    如何查看Vue项目vue的版本号如果是用vue-cli创建的项目,则找到项目根目录下的”package.json”文件如果是要查看vue-cli的版本号的话,则键盘Win+R,输入cmd,再在cmd里面输入vue-V

    2022年5月20日
    62
  • eclipsesvn使用教程_eclipse导入svn项目

    eclipsesvn使用教程_eclipse导入svn项目做好以上的准备后打开Eclipse编译器,点击编译器右上角的OpenPerspective打开SVN资源库界面,新建一个资源库选择资源库的位置,这里我们就用刚才搭好的svn://localhost/ts作为工程目录,点击Finish后如果成功则会看到版本服务器中工程的树形结构了(可能需要用户密码验证)。在svn://localhost/ts根目录上点右键,选择“验出”(英

    2022年9月26日
    0
  • 深度相机 结构光_结构光三维成像原理

    深度相机 结构光_结构光三维成像原理版权声明:本文为博主原创文章,未经博主允许不得转载。违者必究。 https://blog.csdn.net/electech6/article/details/78707839 </div> <linkrel="styles…

    2025年7月20日
    1
  • python .txt文件读取及数据处理总结

    python .txt文件读取及数据处理总结1、处理包含数据的文件最近利用Python读取txt文件时遇到了一个小问题,就是在计算两个np.narray()类型的数组时,出现了以下错误:TypeError:ufunc’subtract’didnotcontainaloopwithsignaturematchingtypesdtype(‘

    2022年5月7日
    105
  • fastText原理和文本分类实战,看这一篇就够了[通俗易懂]

    fastText原理和文本分类实战,看这一篇就够了[通俗易懂]fastText原理篇一、fastText简介fastText是一个快速文本分类算法,与基于神经网络的分类算法相比有两大优点:1、fastText在保持高精度的情况下加快了训练速度和测试速度2、fastText不需要预训练好的词向量,fastText会自己训练词向量3、fastText两个重要的优化:HierarchicalSoftmax、N-gram二、fastText模型架构…

    2022年6月11日
    126
  • LINUX 挖矿脚本newdat.sh

    LINUX 挖矿脚本newdat.sh#!/bin/shsetenforce02>dev/nullechoSELINUX=disabled>/etc/sysconfig/selinux2>/dev/nullsync&&echo3>/proc/sys/vm/drop_cachescrondir=’/var/spool/cron/'”$USER”cont=`cat${crondir}`ssht=`cat/root/.ssh/authorized_keys`echo1&

    2022年7月13日
    28

发表回复

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

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