【问题标题】:Implementing dropout in Theano在 Theano 中实现 dropout
【发布时间】:2016-10-18 11:44:20
【问题描述】:

我目前正在使用 Theano 中构建的卷积神经网络。 Dropout 是一种正则化技术,其中节点输出以一定的概率被屏蔽,据我了解,应该在正向和反向传播期间应用掩码。

由于我目前在 Theano 工作,因此反向传播步骤被 T.grad 函数取代,该函数使用自动微分来计算模型的梯度。在我在网上找到的几个例子中,它们只掩盖了正向的值,在梯度计算步骤中根本不考虑 dropout 掩码。这将对网络产生什么样的影响,如果我想在梯度计算中包含掩码,我该怎么做?我现在的代码主要是基于 Lisa Lab 在他们的深度学习教程中提供的代码。

【问题讨论】:

  • 通常这样的问题应该包括你的一些代码。我建议看更多的例子。看看“lasagne”……这是一个建立在 theano 之上的框架,具有不错的支持和代码,您可以查看。使用 dropout 时,只会更新处于活动状态的单元。在测试期间,使用所有单位,但输出根据 dropout 比率进行缩放。
  • 您在纯 Theano 与 Lasagne 中这样做的任何原因?在 Lasagne 中实现 dropout 是单行的。
  • @user1269942 我拥有的很多代码并不是那么有用,所以我不想发布一些无用的东西。但是谢谢你,我一定会尝试千层面,或者至少对他们如何实施它有很多了解。

标签: python machine-learning theano deep-learning conv-neural-network


【解决方案1】:

x*y等两个变量相乘的梯度,x有y梯度,反之亦然。 Dropout 使用节点输出的掩码,即掩码和节点输出的乘积。在做 grad 的时候,它会由 theano 自己照顾。 dropout implementation in theano

【讨论】:

    猜你喜欢
    • 2018-10-14
    • 2019-01-29
    • 2017-07-18
    • 2017-12-19
    • 1970-01-01
    • 2021-10-08
    • 2021-01-09
    • 2021-03-18
    • 2019-08-05
    相关资源
    最近更新 更多