最近遇到了一个很基础的问题,就是pytorch中的dropout在面对一个n维的矩阵时,是会随机drop某一行、或者某一维上的一个向量,还是某一个元素呢?用试验稍微验证了下

import torch
m = torch.nn.Dropout(p=0.2)
input = torch.randn(5, 5)
output = m(input)

input为

tensor([[-0.2266, -0.6318, -0.1628, -0.0301, -1.2603],[-2.3018,  0.7649,  1.3658, -0.6601,  0.1574],[-0.7697,  0.1300, -1.9488,  0.9426, -0.2315],[ 0.9873,  0.7713,  1.3725, -0.6127,  0.2403],[ 0.5574,  1.3104, -0.1863,  0.9430, -0.3442]])

output为

tensor([[-0.2832, -0.7898, -0.2035, -0.0376, -0.0000],[-2.8772,  0.9561,  1.7072, -0.8251,  0.1968],[-0.9622,  0.1626, -2.4360,  1.1782, -0.2893],[ 1.2341,  0.9641,  1.7156, -0.7659,  0.3003],[ 0.6968,  1.6380, -0.2329,  1.1788, -0.4302]])

所以,dropout的操作是,等可能性的在每一个元素上进行drop的,而不是drop一行或者一列。output中保留元素在数值上发生变化是因为:在官方实现里,保留的每个元素乘上了 1 1 − p \frac{1}{1-p} 1−p1​

对一个三维矩阵dropout:

input = torch.randn(5, 5, 5)
output = m(input)

input为

tensor([[[-0.7328, -0.7222,  1.3446, -0.0297,  2.2102],[-0.2430,  0.7217, -0.0666,  1.2258,  0.0429],[-1.5523, -0.5620, -2.0723,  0.0276,  0.6448],[-0.2670, -0.5384, -0.3922,  0.9496, -0.5713],[-1.4619,  0.7644,  0.9520, -0.1513, -0.2254]],[[ 0.0849, -2.3184, -0.1957,  0.1423, -0.5450],[-0.1516, -0.7531,  1.7559,  0.9391,  0.9862],[ 1.0796,  0.5263, -1.2996, -0.8324,  0.8036],[ 0.6910, -1.5230,  1.4050,  1.6258, -0.9268],[-3.4878,  0.7519, -0.6886,  0.0373,  1.1346]],[[-1.7822, -0.8222,  1.5164,  2.6609,  0.2105],[ 1.4420,  0.5239,  1.7459, -0.7058,  0.7801],[ 1.4009,  0.4207,  0.3810, -0.7673,  0.8988],[ 0.3676,  1.1389,  0.9903, -0.6542, -0.7219],[ 0.2029, -1.2014, -0.0530,  0.6527, -0.4523]],[[ 2.1250,  1.6481, -0.0844, -0.3846, -0.0184],[-1.5917,  0.8343, -0.2303,  0.7135, -1.2380],[ 0.6418, -0.3958,  0.3442, -1.9055,  0.8149],[-0.6485,  1.9034,  0.9087,  1.5293, -0.6239],[-0.2155, -0.0097,  3.0727, -0.0537, -0.9891]],[[-0.4705,  0.4225,  0.2590, -0.6873,  0.8627],[ 1.0333, -0.9247,  0.8617, -0.4957, -0.3247],[-1.1925, -0.5471,  0.9413, -0.5192,  0.2911],[ 2.4236, -1.5812,  0.6202, -1.8823,  0.1273],[-0.4075,  0.0873, -0.6647, -1.2492,  1.0147]]])

output为

tensor([[[-0.0000, -0.9027,  1.6808, -0.0371,  0.0000],[-0.0000,  0.9021, -0.0833,  1.5322,  0.0536],[-1.9404, -0.7025, -0.0000,  0.0345,  0.8060],[-0.3338, -0.6730, -0.0000,  0.0000, -0.7141],[-1.8274,  0.9555,  1.1901, -0.0000, -0.2817]],[[ 0.1061, -2.8980, -0.2447,  0.0000, -0.6813],[-0.1895, -0.9414,  2.1948,  1.1738,  1.2328],[ 1.3494,  0.6579, -0.0000, -1.0405,  1.0044],[ 0.8637, -1.9038,  1.7562,  2.0322, -1.1585],[-4.3598,  0.9398, -0.0000,  0.0466,  1.4183]],[[-2.2277, -1.0278,  1.8955,  3.3262,  0.2631],[ 1.8025,  0.6548,  2.1824, -0.0000,  0.9751],[ 0.0000,  0.5259,  0.4763, -0.0000,  1.1235],[ 0.4594,  0.0000,  1.2379, -0.8177, -0.9023],[ 0.2536, -1.5017, -0.0663,  0.8159, -0.5653]],[[ 2.6562,  0.0000, -0.1055, -0.0000, -0.0230],[-0.0000,  1.0429, -0.2879,  0.8918, -1.5475],[ 0.8022, -0.4948,  0.4302, -0.0000,  1.0186],[-0.8106,  2.3793,  1.1359,  1.9116, -0.7799],[-0.2694, -0.0122,  0.0000, -0.0672, -0.0000]],[[-0.5882,  0.0000,  0.3237, -0.8591,  1.0784],[ 1.2917, -1.1558,  1.0771, -0.6197, -0.4059],[-1.4907, -0.0000,  1.1766, -0.6490,  0.3639],[ 0.0000, -1.9765,  0.7752, -2.3528,  0.0000],[-0.5093,  0.1091, -0.8309, -1.5615,  1.2683]]])

同样,不是drop某一行,或者分散的drop每一个元素

pytorch中的dropout在drop什么?相关推荐

  1. PyTorch 中的 dropout Dropout2d Dropout3d

    文章目录 PyTorch 中的 dropout 1. [Pytoch 说明文档官网 PyTorch documentation 链接](https://pytorch.org/docs/stable/ ...

  2. pytorch中nn.Dropout的使用技巧

    dropout是Hinton老爷子提出来的一个用于训练的trick.在pytorch中,除了原始的用法以外,还有数据增强的用法(后文提到). 首先要知道,dropout是专门用于训练的.在推理阶段,则 ...

  3. Pytorch中的序列化容器-度消失和梯度爆炸-nn.Sequential-nn.BatchNorm1d-nn.Dropout

    Pytorch中的序列化容器-度消失和梯度爆炸-nn.Sequential-nn.BatchNorm1d-nn.Dropout 1. 梯度消失和梯度爆炸 在使用pytorch中的序列化 容器之前,我们 ...

  4. 利用 AssemblyAI 在 PyTorch 中建立端到端的语音识别模型

    作者 | Comet 译者 | 天道酬勤,责编 | Carol 出品 | AI 科技大本营(ID:rgznai100) 这篇文章是由AssemblyAI的机器学习研究工程师Michael Nguyen ...

  5. 循环神经网络实现文本情感分类之Pytorch中LSTM和GRU模块使用

    循环神经网络实现文本情感分类之Pytorch中LSTM和GRU模块使用 1. Pytorch中LSTM和GRU模块使用 1.1 LSTM介绍 LSTM和GRU都是由torch.nn提供 通过观察文档, ...

  6. PyTorch中模型的可复现性

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 本文转自:AI算法与图像处理 在深度学习模型的训练过程中,难免引入 ...

  7. PyTorch中的循环神经网络RNN函数及词嵌入函数介绍

    一.pytroch中的RNN相关函数介绍 1.对于简单的RNN结构,有两种方式进行调用: 1.1 torch.nn.RNN():可以接收一个序列的输入,默认会传入全0的隐藏状态,也可以自己定义初始的隐 ...

  8. 在神经网络中使用dropout

    一.什么是dropout dropout是解决神经网络模型过拟合的好办法,那什么是dropout呢?简而言之,它就是随机的将输入的张量中元素置为0,dropout可以理解为一种集成模型.因为我们将元素 ...

  9. 正则化技巧:标签平滑(Label Smoothing)以及在 PyTorch 中的实现

    来源:DeepHub IMBA 本文约1200字,建议阅读5分钟 在这篇文章中,我们研究了标签平滑,这是一种试图对抗过度拟合和过度自信的技术. 过拟合和概率校准是训练深度学习模型时出现的两个问题.深度 ...

最新文章

  1. 2018-4-7 包子阳书本39页例题
  2. 函数计算是如何工作的?
  3. Hive和Hadoop及RDBMS关系
  4. vue生命周期详解、钩子函数的调用(简单易懂)
  5. Zabbix(一)安装zabbix监控服务配置与添加agent主机的三种方式
  6. JS--------文件操作基本方法:上传/下载
  7. 剑指offer面试题61. 扑克牌中的顺子(排序)(遍历)
  8. 多线程编程-之并发编程:同步容器
  9. Cocoa中Core Data的简单介绍
  10. MYSQL复习笔记12-视图
  11. cgi一键还原 linux分区,cgi plus一键备份恢复工具
  12. html签到页面的代码,签到页面.html
  13. 教你如何迅速秒杀掉:99%的海量数据处理面试题 1
  14. mac删除的文件还能找回吗
  15. P4939 Agent2
  16. java happen-before_Java happen-before规则
  17. 电脑如何长截屏截图_持续集成截屏视频-DNRTV上的Jay Flowers和I
  18. 200个SOLIDWORKS使用技巧
  19. 基于mahout的动漫推荐系统
  20. 【Python技巧】正则表达式:(?:)匹配多个字符串之一;(非获取匹配)

热门文章

  1. (cons '(〇 . 前言) 《为自己写本-Guile-书》)
  2. Linux下Makefile的安装以及使用
  3. 系分 - 案例分析 - 项目管理
  4. OD使用教程11(困境) - 调试篇11|解密系列
  5. 儿童讲堂 - 反义词
  6. 一维条形码CODE128编码及字符集CODE A、B、C解析
  7. JTEKT PC10系列 中绝对值编码器使用方法(二)
  8. MySQL约束条件及外键的关系
  9. C++编程思想 第二卷 勘误
  10. SLAM入坑之一:用realsense D415跑一下ORB-SLAM在ROS-melodic上