PyTorch笔记 - Dropout: A Simple Way to Prevent Neural Networks from Overfitting
面试:
- 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相关推荐
- COMBINING LABEL PROPAGATION AND SIMPLE MODELS OUT-PERFORMS GRAPH NEURAL NETWORKS(CorrectSmooth)阅读笔记
文章目录 链接 一.摘要 二.引言 三."修正和平滑"模型 四.转导式节点分类实验 四.总结 总结 红色部分为个人的一些解读,不足之处请多多指点! 链接 论文题目:结合标签传播和简 ...
- 论文笔记: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 文章概况 作者 ...
- 论文阅读笔记:Link Prediction Based on Graph Neural Networks
文章目录 说明 Abstract 1 Introduction 2 Preliminaries Notations Latent features and explicit features Grap ...
- 论文笔记 - 《ImageNet Classification with Deep Convolutional Neural Networks》 精典
基于卷积神经网络的图像分类(经典网络) 作者:Alex Krizhevsky(论文中第一作者的名字为网络名字AlexNet) 单位:加拿大多伦多大学 发表会议时间:NIPS 2012 (NIPS:机器 ...
- 【论文笔记】Image Privacy Prediction Using Deep Neural Networks
摘要 如今,越来越多的图片在Facebook.Flickr.Foursquare和Instagram等社交网站上在线共享.图像共享不仅发生在一群朋友之间,而且越来越多地发生在用户社交圈之外,用于社交发 ...
- cs224w(图机器学习)2021冬季课程学习笔记9 Graph Neural Networks 2: Design Space
诸神缄默不语-个人CSDN博文目录 cs224w(图机器学习)2021冬季课程学习笔记集合 文章目录 1. A General Perspective on Graph Neural Networks ...
- 论文笔记 | 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 ...
- [论文阅读笔记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 ...
- 《Sequence to Sequence Learning with Neural Networks》阅读笔记
Abstract DNNs 可用于各种复杂的学习任务并取得很好的效果,但是 DNNs 不能用于序列到序列的映射.这篇论文提出了一种端到端(end-to-end)的神经网络模型,来学习这种映射关系.作者 ...
- pytorch 笔记 :实现Dropout
1 理论部分 首先说明一点,dropout是用来解决overfitting的,如果在训练集上实验效果就不理想,那么加了dropout也救不了. 1.1 training时的dropout 使用了Dro ...
最新文章
- 两块 硬盘 主从盘跳线详解
- java 文件上传ssm_ssm框架下实现文件上传
- 前端学习(1509):单页应用SPA特点
- 玩转oracle 11g(23):区分大小写和字符集不同
- jSignature签名的用法,一文教会你(二)后台代码
- linux运行不了.sh文件,linux下不能执行/bin/sh脚本的原因:command not found
- 非sudo用户引起同名字体故障一例
- matlab单枝节匹配器,第八讲微带匹配电路单枝节匹配电路.ppt
- oracle查询锁表进程
- JAVA全栈工程师学习线路
- SpringMVC是什么?
- ppt矩形里面的图片怎么放大缩小_PPT中图片点击放大效果的实现
- 高德地图标记文字修改样式_地图标注有哪些优势?如何进行地图标注?
- 顺序栈的基本操作(C++实现)
- 去应用商店给app评分
- java 连接Linux服务器并执行指令
- 判断按键输入代码及 vk 键值对应表
- python导入安装包
- Linux内核源码目录介绍
- C语言程序用英尺换算公式计算身高的小例子