我们都知道dropout 为了防止过拟合而随机抑制神经元,即
(1)将featuremap 某些神经元按概率设置为0
(2)不被抑制的神经元变为 1/pro 倍
在tensroflow 中
tf.nn.dropout(X,pro)主要含两个变量,输入张量X和 概率值pro(也是要以张量输入)
代码如下:
import tensorflow as tf
a=tf.constant([1.,2.,3.,4.,5.,6.,7.,8.,9.,10.])
dropout_keep_prob = tf.placeholder(tf.float32, name="dropout_keep_prob")
b=tf.nn.dropout(a,dropout_keep_prob)
with tf.Session() as sess:
print(sess.run(b,feed_dict={dropout_keep_prob:0.5}))
结果如下:
[ 2. 4. 0. 0. 10. 0. 14. 0. 18. 0.]
由于是以概率发生变化,所以不一定每次都是50%的神经元被抑制,也有可能这样
[ 0. 4. 6. 8. 10. 12. 0. 16. 0. 0.]