对于是使用tf.nn.dropout还是使用tf.layers.dropout,我感到非常困惑。
许多MNIST的例子似乎都使用tf.nn.droput,而keep_prop则是其中的一种。
但是与tf.layers.dropout有什么不同呢?tf.layers.dropout中的“速率”参数与tf.nn.dropout相似吗?
一般来说,tf.nn.dropout和tf.layers.dropout之间的区别适用于所有其他类似的情况,比如tf.nn和tf.layers中的类似函数。
发布于 2017-06-07 05:52:20
快速浏览tensorflow/python/层/core.py和ops.py可以发现,tf.layers.dropout
是tf.nn.dropout
的包装器。
这两项职能的唯一区别是:
tf.nn.dropout
有参数keep_prob
:“每个元素被保留的概率”
tf.layers.dropout
有参数rate
:“辍学率”
因此,keep_prob = 1 - rate
定义为这里tf.layers.dropout
具有training
参数:“是在训练模式(应用退出)还是在推理模式(返回未触及的输入)中返回输出。”发布于 2017-06-06 22:09:22
想法是一样的,参数略有不同。在nn.dropout中,keep_prob是每个元素被保留的概率。在layers.dropout中,rate=0.1将退出10%的输入单元。
所以keep_prob = 1 - rate
。此外,layers.dropout还允许training
参数。
通常,只要仔细阅读有关您所关心的函数的文档,您就会看到其中的不同之处。
发布于 2018-01-03 21:02:02
在训练阶段,他们是相同的(只要“下降率”和“保持率”是一致的)。然而,对于评估(测试)阶段,它们是完全不同的。tf.nn.dropout
仍然会做随机下降,而tf.layers.dropout
不会丢弃任何东西(透明层)。在大多数情况下,使用tf.layers.dropout
是有意义的。
https://stackoverflow.com/questions/44395547
复制相似问题