machine-learning - 在 Keras 中,dropout 应用在哪个权重上?

标签 machine-learning keras keras-layer dropout

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

最佳答案

没有简单的方法。 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 时使用的权重。

关于machine-learning - 在 Keras 中,dropout 应用在哪个权重上?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54244630/

相关文章:

conv-neural-network - Tensorflow 2.0 中 KerasLayer 的 TimeDistributed

python - 如何建立 RF(随机森林)和 PSO(粒子群优化器)的混合模型以找到产品的最佳折扣?

opencv - OpenCV 或类似产品中是否有可用的卷积神经网络实现?

machine-learning - 逻辑回归 : one-vs-all method for multi classification

Python tesseract 提高了 OCR 的准确性

python - 使用双向包装器时,如何获得 LSTM 层中的最终隐藏状态和序列

python - 如何在 tensorflow 中平均一层的输出?

keras - 使用我自己的微调网络可视化 ConvNet 过滤器,在运行 : K. gradients(loss, model.input)[0] 时产生 "NoneType"

tensorflow - 如何用元信息丰富卷积神经网络?

python - Keras --- 训练在 fit_generator() 期间卡住