欢迎来到三一文库! | 帮助中心 三一文库31doc.com 一个上传文档投稿赚钱的网站
三一文库
全部分类
  • 研究报告>
  • 工作总结>
  • 合同范本>
  • 心得体会>
  • 工作报告>
  • 党团相关>
  • 幼儿/小学教育>
  • 高等教育>
  • 经济/贸易/财会>
  • 建筑/环境>
  • 金融/证券>
  • 医学/心理学>
  • ImageVerifierCode 换一换
    首页 三一文库 > 资源分类 > DOC文档下载
     

    基于Numpy实现神经网络:如何加入和调整dropout?.doc

    • 资源ID:3411413       资源大小:16.50KB        全文页数:2页
    • 资源格式: DOC        下载积分:2
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录   微博登录  
    二维码
    微信扫一扫登录
    下载资源需要2
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    基于Numpy实现神经网络:如何加入和调整dropout?.doc

    基于Numpy实现神经网络:如何加入和调整dropout?和DeepMind数据科学家、Udacity深度学习导师Andrew Trask一起,基于Numpy手写神经网络,更深刻地理解dropout这一概念。总结:几乎所有目前最先进的神经网络都用到了dropout. 这篇教程介绍如何通过几行Python代码在神经网络中加入Dropout. 读完这篇教程之后,你将得到一个可以工作的dropout实现,并且掌握在任何神经网络中加入和调整dropout的技能。如果你对我的文章感兴趣,欢迎在推特上关注 iamtrask,也欢迎给我反馈。直接给我代码import numpy as npX = np.array( 0,0,1,0,1,1,1,0,1,1,1,1 )y = np.array(0,1,1,0).Talpha,hidden_dim,dropout_percent,do_dropout = (0.5,4,0.2,True)synapse_0 = 2*np.random.random(3,hidden_dim) - 1synapse_1 = 2*np.random.random(hidden_dim,1) - 1for j in xrange(60000):layer_1 = (1/(1+np.exp(-(np.dot(X,synapse_0)if(do_dropout):layer_1 *= np.random.binomial(np.ones(len(X),hidden_dim),1-dropout_percent)0 * (1.0/(1-dropout_percent)layer_2 = 1/(1+np.exp(-(np.dot(layer_1,synapse_1)layer_2_delta = (layer_2 - y)*(layer_2*(1-layer_2)layer_1_delta = layer_2_delta.dot(synapse_1.T) * (layer_1 * (1-layer_1)synapse_1 -= (alpha * layer_1.T.dot(layer_2_delta)synapse_0 -= (alpha * X.T.dot(layer_1_delta)一、什么是dropout?如同前一篇文章提到的,神经网络是一个美化的搜索问题。神经网络中的每一个节点搜索输入数据和正确的输出数据之间的相关性。考虑前一篇中的图片。曲线表示网络对应每个具体权重产生的误差。曲线的低点(读作:低误差)标志着权重“找到”输入和输出之间的关系。图中的球标志着不同的权重。它们都试图找到低点。考虑颜色。球的初始位置是随机生成的(就像神经网络的权重)。如果两个球随机开始于同一颜色区域,那么它们将收敛于同一点。这里存在冗余!浪费算力和内存!这正是神经网络中发生的事。为何dropout: dropout有助于防止权重收敛于同一位置。它通过在前向传播阶段随机关闭节点做到这一点。接着在反向传播时激活所有节点。让我们仔细看看。二、如何加入和调整dropout?为了在网络层上执行dropout,我们在前向传播阶段随机设置层的值为0见第10行。第9行: 参数化是否使用dropout. 我们只打算在训练阶段使用dropout. 不要在运行时使用dropout,也不要在测试数据集上使用dropout. 此外,这一行也意味着我们需要增大前向传播的值。这与关闭的值的数目成正比。一个简单的直觉是,如果你关闭一半的隐藏层,那么你需要加倍前向传播的值,以正确补偿输出。感谢karpathy指出这一点。调整的最佳实践第4行: 参数化dropout百分比。这影响关闭任何一个节点的概率。对隐藏层而言,较好的初始值设定是50%. 如果将dropout应用于输入层,最好不要超过25%.Hinton主张在调整dropout的同时调整隐藏层的大小。首先关闭dropout,增加隐藏层尺寸,直到你完美地拟合了你的数据。接着,使用相同的隐藏层尺寸,开启dropout进行训练。这应该是一个近乎最优的配置。一旦结束训练,关闭dropout。万岁!你有了一个可以工作的神经网络!

    注意事项

    本文(基于Numpy实现神经网络:如何加入和调整dropout?.doc)为本站会员(白大夫)主动上传,三一文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    经营许可证编号:宁ICP备18001539号-1

    三一文库
    收起
    展开