I can't understand why dropout works like this in tensorflow. The blog of CS231n http://cs231n.github.io/neural-networks-2/ says that, "dropout is implemented by only keeping a neuron active with some probability p (a hyperparameter), or setting it to zero otherwise."
Also you can see this from picture(Taken from the same site)
![enter image description here](https://i.stack.imgur.com/SbXq1.jpg)
来自张量流网站,With probability keep_prob, outputs the input element scaled up by 1 / keep_prob, otherwise outputs 0.
现在,为什么输入元素按比例放大1/keep_prob
?为什么不按概率保持输入元素原样,而不用1/keep_prob
?
这种扩展使得相同的网络能够用于训练(使用keep_prob < 1.0
)和评估(与keep_prob == 1.0
)。来自辍学纸 http://www.cs.toronto.edu/~rsalakhu/papers/srivastava14a.pdf:
这个想法是在测试时使用单个神经网络而不丢失。该网络的权重是训练权重的缩小版本。如果一个单位以概率被保留p在训练期间,该单元的输出权重乘以p测试时如图2所示。
而不是添加操作来缩小权重keep_prob
在测试时,TensorFlow 实现添加了一个操作来扩大权重1. / keep_prob
在训练时。对性能的影响可以忽略不计,并且代码更简单(因为我们使用相同的图并对待keep_prob
as a tf.placeholder() https://www.tensorflow.org/versions/master/api_docs/python/io_ops.html#placeholder根据我们是在训练还是评估网络,它会被赋予不同的值)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)