【问题标题】:In Keras, on which weight is the dropout applied?在 Keras 中,dropout 应用于哪个权重?
【发布时间】:2019-06-12 04:00:21
【问题描述】:

我目前正在尝试找到一种方法来检索给定层“忽略”哪些权重(尤其是当我在测试阶段使用“训练”标志使用 dropout 时)。 有没有一种简单的方法可以找到它,或者我有义务创建一个自定义 dropout 层?

【问题讨论】:

  • Dropout 应用于输入(输出),而不是权重。 Keras 没有自己的 dropout 逻辑;它直接使用后端的 dropout 实现。

标签: machine-learning keras keras-layer dropout


【解决方案1】:

没有简单的方法。 Keras 的 tensorflow 后端只需调用tf.nn.dropout,它的工作原理是生成一个与其输入大小相同的随机矩阵,如果随机矩阵中的对应值小于阈值,则将输入中的值设置为零。

这里是关键步骤,位于https://github.com/tensorflow/tensorflow/blob/master/tensorflow/python/ops/nn_ops.py

# Sample a uniform distribution on [0.0, 1.0) and select values larger than
# rate.
random_tensor = random_ops.random_uniform(
    noise_shape, seed=seed, dtype=x.dtype)
keep_prob = 1 - rate
ret = (1 / keep_prob) * math_ops.cast(keep_prob >= random_tensor,
                                      x.dtype) * x

您无法直接通过 keras 检索这些结果,因为随机乘法会立即应用而不是保存。但是您可以尝试修改源代码以打印或保存 math_ops.cast(keep_prob >= random_tensor,x.dtype) 的结果,其中包含在使用 dropout 时使用了哪些权重。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-10-31
    • 2019-01-04
    • 1970-01-01
    • 2019-04-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多