[英]Tensorflow Dropout: What happens if I apply two dropout layers?
可以说,我正在像这样构建一个神经网络:
x = tf.nn.conv2d(input, ...)
x = tf.nn.max_pool(x, ...)
x = tf.nn.dropout(x, keep_prob=1.)
x = tf.nn.thislayershallhavedropout(x,...)
x = tf.nn.dropout(x, keep_prob=.5)
告诉TensorFlow只是退出thislayershallhavedropout
的层thislayershallhavedropout
?
基本上,我想做的是告诉TensorFlow仅在单个层上使用dropout,而不是级联回到早期的层。
退出将激活设置0
且激活的机会为0
。 很难给出“层”的丢失,因为您仅在给定机会下将连接设置为0
或1
。
如果要为某个特定层的出站连接提供传出连接,则应该执行以下操作:
x = tf.nn.thislayershallhavedropout(x,...)
x = tf.nn.dropout(x, keep_prob=.5)
您基本上已经完成了。 因此,来自该层的所有激活中有50%的激活将被thislayershallhavedropout
。
顺便说一句,正如注释中指出的那样,将keep_prob设置为1
完全没有效果:这将使所有激活都像正常情况一样通过。
x = tf.nn.dropout(x, keep_prob=1.)
请记住:退出可能不会直接干扰先前的层,但是,在反向传播期间,先前层和成功层的权重将适应禁用的激活的一半。 因此,您无法防止辍学对先前的图层产生(间接)影响。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.