Tensorflow Dropout:如果我应用两个Dropout层会发生什么?

2024-10-04 05:31:08 发布

您现在位置:Python中文网/ 问答频道 /正文

比如说,我正在构建这样一个神经网络:

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?在

基本上,我要做的是告诉TensorFlow只在一个层上使用dropout,而不是级联回前面的层。在


Tags: inputtftensorflow神经网络nn技术max级联
1条回答
网友
1楼 · 发布于 2024-10-04 05:31:08

Dropout设置通过给定机会传递给0的激活。很难给出一个“layer”退出,因为您只在给定的机会下设置到01的连接。在

如果您想让某个层的传出连接丢失,则应执行以下操作:

x = tf.nn.thislayershallhavedropout(x,...)
x = tf.nn.dropout(x, keep_prob=.5)

你基本上已经做到了。因此,来自thislayershallhavedropout的激活将被禁用。在

顺便说一句,正如评论中所指出的,将keep_prob设置为1一点效果都没有:这将让所有激活像正常一样通过。在

^{pr2}$

请记住:丢失可能不会直接干扰前一层,但是,在反向传播过程中,前一层和后续层的权重将适应禁用的一半激活。因此,您无法阻止丢失对前一层产生(间接)影响。在

相关问题 更多 >