面试:

  • dropout的原理和作用是什么?
  • dropout如何解决过拟合,模拟什么样的学习方法?答案:集成学习
  • 在dropout中,除了直接将weight设置为0,对于保留的weight还进行哪些操作,例如p=0.2
  • 实现一个dropout()函数,输入input,输出output,三层参数input,p,training
  • 调用model.eval(),执行哪些操作,和没有调用之前,有什么分别?哪些常用的layer受到影响?

torch.nn的模块,包含很多layer,神经网络是核心模块,都是torch.nn的组合

结合torch.nn源码,理解不同的API,同时包括经典论文

Dropout Layers,除此之外,以函数的形式的dropout,torch.nn.functional.dropout

  • nn.Dropout

torch.nn.Dropout(p=0.5, inplace=False)

import torchm = nn.Dropout(p=0.2)
input = torch.ones(10, 2)
output = m(input)
print(output)输出:有3个置为0
tensor([[1.2500, 1.2500],[1.2500, 1.2500],[1.2500, 1.2500],[1.2500, 1.2500],[1.2500, 1.2500],[1.2500, 1.2500],[0.0000, 1.2500],[1.2500, 1.2500],[0.0000, 1.2500],[1.2500, 1.2500]])
  • torch.nn.functional.dropout

函数dropout中,有training参数,training控制是否需要使用dropout

dropout论文:Dropout: A Simple Way to Prevent Neural Networks from Overfitting,Hinton,2014年

dropout,解决过拟合 (overfitting)问题,同时,运行多个不同网络(集成学习,Ensemble Learning),可以解决过拟合问题,但是代价过于昂贵。

dropout,训练时,随机丢弃一些神经元,推理时,不要使用Dropout,即使用全部神经元。使用Dropout,类似于同时训练多个不同网络。

训练时,按p概率保留一些神经元;推理时,将权重w*概率p,是期望值。测试用于模拟训练状态,不完全一致。将p放到训练阶段,而不是测试阶段,效果相当。

调用function的dropout,四个参数,input,p概率,training是否训练,inplace是否替换

  • Dropout -> _DropoutNd -> Module,Module包含self.training,用于调配函数
  • Module的self.train()函数,修改self.training
  • eval(),调用self.train(False),影响到Dropout的self.training设置为False

dropout源码:

from .. import functional as Fclass Dropout(_DropoutNd):def forward(self, input: Tensor) -> Tensor:return F.dropout(input, self.p, self.training, self.inplace)

内部的F是用C代码实现的。

训练阶段,scale变大:scale = 1 / (1 - ratio)

伯努利分布的概率(1-ratio)生成0-1的mask,即 X * scale * mask = Y

Dropout的简易实现:

import numpy as np
def dropout(input_arr, p, training):"""p是舍弃的概率"""scale = 1 / (1-p)mask = np.random.binomial(1, 1-p, input_arr.shape)if training:return input_arr * scale * maskelse:return input_arrinput_arr = np.ones((10, 2))
print(dropout(input_arr, 0.2, True))
print(dropout(input_arr, 0.2, False))

其他函数:

  • nn.Dropout1d
  • nn.Dropout2d
  • nn.Dropout3d
  • nn.AlphaDropout
  • nn.FeatureAlphaDropout

PyTorch笔记 - Dropout: A Simple Way to Prevent Neural Networks from Overfitting相关推荐

  1. COMBINING LABEL PROPAGATION AND SIMPLE MODELS OUT-PERFORMS GRAPH NEURAL NETWORKS(CorrectSmooth)阅读笔记

    文章目录 链接 一.摘要 二.引言 三."修正和平滑"模型 四.转导式节点分类实验 四.总结 总结 红色部分为个人的一些解读,不足之处请多多指点! 链接 论文题目:结合标签传播和简 ...

  2. 论文笔记:Domain Randomization for Transferring Deep Neural Networks from Simulation to the Real World

    Domain Randomization for Transferring Deep Neural Networks from Simulation to the Real World 文章概况 作者 ...

  3. 论文阅读笔记:Link Prediction Based on Graph Neural Networks

    文章目录 说明 Abstract 1 Introduction 2 Preliminaries Notations Latent features and explicit features Grap ...

  4. 论文笔记 - 《ImageNet Classification with Deep Convolutional Neural Networks》 精典

    基于卷积神经网络的图像分类(经典网络) 作者:Alex Krizhevsky(论文中第一作者的名字为网络名字AlexNet) 单位:加拿大多伦多大学 发表会议时间:NIPS 2012 (NIPS:机器 ...

  5. 【论文笔记】Image Privacy Prediction Using Deep Neural Networks

    摘要 如今,越来越多的图片在Facebook.Flickr.Foursquare和Instagram等社交网站上在线共享.图像共享不仅发生在一群朋友之间,而且越来越多地发生在用户社交圈之外,用于社交发 ...

  6. cs224w(图机器学习)2021冬季课程学习笔记9 Graph Neural Networks 2: Design Space

    诸神缄默不语-个人CSDN博文目录 cs224w(图机器学习)2021冬季课程学习笔记集合 文章目录 1. A General Perspective on Graph Neural Networks ...

  7. 论文笔记 | Improving neural networks by preventing co-adaptation of feature detectors

    Authors G. E. Hinton , N. Srivastava, A. Krizhevsky, I. Sutskever and R. R. Salakhutdinov Hinton Abs ...

  8. [论文阅读笔记58]Learning from Noisy Labels with Deep Neural Networks:A Survey

    1.题目 Learning from Noisy Labels with Deep Neural Networks: A Survey 作者团队:韩国科学技术院(KAIST) Song H , Kim ...

  9. 《Sequence to Sequence Learning with Neural Networks》阅读笔记

    Abstract DNNs 可用于各种复杂的学习任务并取得很好的效果,但是 DNNs 不能用于序列到序列的映射.这篇论文提出了一种端到端(end-to-end)的神经网络模型,来学习这种映射关系.作者 ...

  10. pytorch 笔记 :实现Dropout

    1 理论部分 首先说明一点,dropout是用来解决overfitting的,如果在训练集上实验效果就不理想,那么加了dropout也救不了. 1.1 training时的dropout 使用了Dro ...

最新文章

  1. 两块 硬盘 主从盘跳线详解
  2. java 文件上传ssm_ssm框架下实现文件上传
  3. 前端学习(1509):单页应用SPA特点
  4. 玩转oracle 11g(23):区分大小写和字符集不同
  5. jSignature签名的用法,一文教会你(二)后台代码
  6. linux运行不了.sh文件,linux下不能执行/bin/sh脚本的原因:command not found
  7. 非sudo用户引起同名字体故障一例
  8. matlab单枝节匹配器,第八讲微带匹配电路单枝节匹配电路.ppt
  9. oracle查询锁表进程
  10. JAVA全栈工程师学习线路
  11. SpringMVC是什么?
  12. ppt矩形里面的图片怎么放大缩小_PPT中图片点击放大效果的实现
  13. 高德地图标记文字修改样式_地图标注有哪些优势?如何进行地图标注?
  14. 顺序栈的基本操作(C++实现)
  15. 去应用商店给app评分
  16. java 连接Linux服务器并执行指令
  17. 判断按键输入代码及 vk 键值对应表
  18. python导入安装包
  19. Linux内核源码目录介绍
  20. C语言程序用英尺换算公式计算身高的小例子

热门文章

  1. 用计算机在作文格中打单字字,二年级信息技术第3—12课教案
  2. 无理数究竟是什么?连续性公理的产物?——读戴德金之二
  3. 未来科学大奖 计算机,未来科学大奖
  4. 零点存在定理与介值定理
  5. 转载英文单词备忘录词汇
  6. Android 日历表事件表操作
  7. Windows NAT端口映射
  8. 逆向分析中加解密算法常用工具
  9. 程序员必会的计算机网络知识 --酷勤网
  10. Lighttools中模拟白光LED