一、dropout的提出和原理

在2012年,Hinton在其论文《Improving neural networks by preventing co-adaptation of feature detectors》中提出Dropout,目的是为了缓解模型的过拟合。

 co-adaptation:在神经网络中,隐藏层单元之间有很高的相关性。

原理:我们都知道通过平均多个不同网络的预测输出可以很好地降低error,但是这种方法训练和测试时计算代价巨大。Dropout的本质其实与之类似,当每次训练随机忽略部分hidden units的时候(其实就是只用这些高相关性的隐藏层单元的一部分),就相当于在训练不同的模型。

可参考hinton的另一篇论文《Dropout: A Simple Way to Prevent Neural Networks from Overfitting》。

二、dropout的工作流程

训练:dropout是随机的置一些神经元为0,仅仅使用一部分神经元,在backward阶段,只改变那些神经元不为0的节点的参数。

测试:dropout的概率置1,不使用dropout。

三、dropout的代码演示

注意,输出的非0元素是原来的 “1/keep_prob” 倍,保证数据在整体上保持一致。

import tensorflow as tf

dropout = tf.placeholder(tf.float32)
x = tf.Variable(tf.ones([10, 10]))
y = tf.nn.dropout(x, dropout) init = tf.initialize_all_variables()
with tf.Session() as sess:
sess.run(init)
print(sess.run(x))
print (sess.run(y, feed_dict = {dropout: 0.5}))

对应输出

[[1. 1. 1. 1. 1. 1. 1. 1. 1. 1.]
[1. 1. 1. 1. 1. 1. 1. 1. 1. 1.]
[1. 1. 1. 1. 1. 1. 1. 1. 1. 1.]
[1. 1. 1. 1. 1. 1. 1. 1. 1. 1.]
[1. 1. 1. 1. 1. 1. 1. 1. 1. 1.]
[1. 1. 1. 1. 1. 1. 1. 1. 1. 1.]
[1. 1. 1. 1. 1. 1. 1. 1. 1. 1.]
[1. 1. 1. 1. 1. 1. 1. 1. 1. 1.]
[1. 1. 1. 1. 1. 1. 1. 1. 1. 1.]
[1. 1. 1. 1. 1. 1. 1. 1. 1. 1.]]
[[0. 2. 0. 2. 2. 0. 2. 0. 0. 2.]
[0. 0. 0. 2. 0. 0. 0. 0. 0. 0.]
[2. 0. 0. 2. 0. 2. 2. 0. 0. 2.]
[2. 2. 0. 2. 2. 0. 2. 2. 0. 2.]
[0. 0. 0. 0. 0. 2. 0. 0. 0. 0.]
[0. 2. 2. 2. 0. 2. 2. 0. 2. 0.]
[2. 0. 0. 0. 2. 2. 0. 0. 2. 0.]
[2. 2. 2. 2. 0. 0. 2. 0. 2. 0.]
[0. 2. 0. 0. 0. 0. 2. 0. 2. 0.]
[0. 2. 0. 0. 0. 0. 0. 2. 2. 2.]]

Drop_out--防止过拟合的更多相关文章

  1. Neural Network Toolbox使用笔记1:数据拟合

    http://blog.csdn.net/ljp1919/article/details/42556261 Neural Network Toolbox为各种复杂的非线性系统的建模提供多种函数和应用程 ...

  2. 使用matlab进行空间拟合

    假设有这么一组数据, x=[4 5 6 7 8 4 8 10]'; y=[56 56 56 56 56 60 60 60]';z=[6 6 6 9 6 19 6 6]'; 要求出其平面方程z=C+Ax ...

  3. 局部加权回归、欠拟合、过拟合(Locally Weighted Linear Regression、Underfitting、Overfitting)

    欠拟合.过拟合 如下图中三个拟合模型.第一个是一个线性模型,对训练数据拟合不够好,损失函数取值较大.如图中第二个模型,如果我们在线性模型上加一个新特征项,拟合结果就会好一些.图中第三个是一个包含5阶多 ...

  4. 数据的平面拟合 Plane Fitting

    数据的平面拟合 Plane Fitting 看到了一些利用Matlab的平面拟合程序 http://www.ilovematlab.cn/thread-220252-1-1.html

  5. 关于过拟合、局部最小值、以及Poor Generalization的思考

    Poor Generalization 这可能是实际中遇到的最多问题. 比如FC网络为什么效果比CNN差那么多啊,是不是陷入局部最小值啊?是不是过拟合啊?是不是欠拟合啊? 在操场跑步的时候,又从SVM ...

  6. PRML读书后记(一): 拟合学习

    高斯分布·拟合 1.1 优美的高斯分布 中心极限定理[P79]证明均匀分布和二项分布在数据量 $N\rightarrow \infty$ 时,都会演化近似为高斯分布. 作为最晚发现的概率分布,可以假设 ...

  7. [CC]平面拟合

    常见的平面拟合方法一般是最小二乘法.当误差服从正态分布时,最小二乘方法的拟合效果还是很好的,可以转化成PCA问题. 当观测值的误差大于2倍中误差时,认为误差较大.采用最小二乘拟合时精度降低,不够稳健. ...

  8. paper 123: SVM如何避免过拟合

    过拟合(Overfitting)表现为在训练数据上模型的预测很准,在未知数据上预测很差.过拟合主要是因为训练数据中的异常点,这些点严重偏离正常位置.我们知道,决定SVM最优分类超平面的恰恰是那些占少数 ...

  9. 如何在java中拟合正态分布

    前言 最近在工作中需要拟合高斯曲线,在python中可以使用 scipy,相关代码如下: #!/usr/bin/env python # -*- coding=utf-8 -*- %matplotli ...

  10. overfitting过拟合

    来自:https://www.zhihu.com/question/32246256 其实不完全是噪声和假规律会造成过拟合. (1)打个形象的比方,给一群天鹅让机器来学习天鹅的特征,经过训练后,知道了 ...

随机推荐

  1. RPM常用命令总结

    安装 rpm -ivh package_name (package_name指的是RPM包的文件名) 查询 1.查询是否安装,及安装版本 rpm -q 已安装的软件名(ex:rpm -q docker ...

  2. 几款常见web扫描器的简要记录

    一.前期侦查 为了减少和目标系统的交互(防止触发报警),建议将目标站点镜像一份到本地 httrack(镜像网站到本地)  ====> 根据引导填入相关信息即可,使用非常简单 二.扫描 扫描分两种 ...

  3. 洛谷 P4017 最大食物链计数

    洛谷 P4017 最大食物链计数 洛谷传送门 题目背景 你知道食物链吗?Delia生物考试的时候,数食物链条数的题目全都错了,因为她总是重复数了几条或漏掉了几条.于是她来就来求助你,然而你也不会啊!写 ...

  4. 加速自己的hexo,使用GitHub+Coding实现国内外网站加速

    在配置好hexo之后,我们发现访问网站很慢,但又不是我们使用的主题的问题,那么就是网络环境的影响,即使我们使用了CDN加速,但还是没有我们国内的网站访问起来快速,(听说去美国的服务器要经过太平洋下面的 ...

  5. Mysql 免安装教程 百度云网盘有文件和word说明

    一 把文件解压到一个目录下 这是解压后的目录 将my.ini文件考进去 双击打开my.ini 找到这两行更改成自己的解压路径保存 右键此电脑属性 找到高级系统设置配置环境变量 新建—>变量值是解 ...

  6. java图形界面 计算器实现

    编写程序实现一个简单计算器的基本功能,具体可以模仿Windows附件中的计算器或模拟常见的实物计算器. package beizi; import java.awt.EventQueue; impor ...

  7. electron窗口间通信

    以下代码均来自于我开发的开源软件:想学吗 窗口A的渲染进程发消息给主进程 const { clipboard, ipcRenderer, remote } = require('electron'); ...

  8. python做中学(四)main函数的用法

    什么场景下会有main函数? 当该python脚本被作为模块(module)引入(import)时,其中的main()函数将不会被执行. main函数的作用? __name__ == '__main_ ...

  9. Redis 笔记整理:回收策略与 LRU 算法

    Redis的回收策略 noeviction:返回错误当内存限制达到并且客户端尝试执行会让更多内存被使用的命令(大部分的写入指令,但DEL和几个例外) allkeys-lru: 尝试回收最少使用的键(L ...

  10. [08]ASP.NET Core 中 launchsettings.json 启动配置文件

    ASP.NET Core launchsettings.json 启动配置文件 本文作者:梁桐铭- 微软最有价值专家(Microsoft MVP) 文章会随着版本进行更新,关注我获取最新版本 本文出自 ...