machine-learning - 在 Keras 中,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 时使用了哪些权重。
推荐阅读
- linux - 删除匹配行和所需行
- angular - 使用组件 getter 渲染路由器链接不起作用?
- objective-c - 在 Cocoa macOS 应用程序中,如何构建两个过滤所有项目或不过滤项目的 NSPredicates?
- java - 我无法获取数据库中的所有表名
- android - 如何更改 Flutter 应用程序的名称?
- mobx - 在 Mobx 中,一个复杂的组件可以拥有自己的商店吗?
- bash - 使文件成为可执行文件时,Bash 脚本命令会损坏
- ios - IOS,几个 UIButtons 链接到一个 IBAction - 滞后问题
- python - Django / DRF:过滤反向外键
- apache-spark - spark如何从HDFS加载文件以及它与RDD的关系