我正在使用tensorflow实现self normalizing neural network . 目前,tf.nn.selu和tf.contrib.nn.alpha_dropout形式的tensorflow "primitives"应该是一个简单的过程 . 我的问题是tf.contrib.nn.alpha_dropout . 我期待它有一个布尔开关,当你在训练时和你在推理时,通常dropout函数与其他激活函数一起使用 . 在作者的原始implementation中,我们确实看到他们在selu dropout函数(dropout_selu)中有这个布尔开关(训练) .
有什么我想念的吗?
1 回答
tf.contrib.nn.alpha_dropout
应被视为tf.nn.dropout
的类似物 . The latter function也没有训练开关的参数 . 它不应与tf.layers.dropout
混淆,tf.layers.dropout
包含tf.nn.dropout
并且有一个training
参数 . 正如我们所看到的in the implementation,layers
版本返回nn.dropout
的结果或取决于training
开关的标识 . 以类似的方式围绕alpha_dropout
定义自己的包装器应该相对容易 .为避免混淆:
layers.dropout
最终调用了dropout的"keras layers"版本,这是上面链接的实现 .