我怎样才能使用" leaky_relu"作为Tensorflow中的激活" tf.layers.dense"?

时间:2018-02-23 22:26:59

标签: python tensorflow

使用Tensorflow 1.5,我尝试将leaky_relu激活添加到密集图层的输出,同时我可以更改alpha的{​​{1}}(检查here )。我知道我可以这样做:

leaky_relu

我想知道是否有办法在一行中写这个,就像我们可以为output = tf.layers.dense(input, n_units) output = tf.nn.leaky_relu(output, alpha=0.01) 做的那样:

relu

我尝试了以下操作,但收到错误:

ouput = tf.layers.dense(input, n_units, activation=tf.nn.relu)

有办法做到这一点吗?

4 个答案:

答案 0 :(得分:4)

至少在版本2.3.0.dev20200515的TensorFlow上,可以使用具有任意alpha参数的LeakyReLU激活作为Dense层的activation参数:< / p>

output = tf.keras.layers.Dense(n_units, activation=tf.keras.layers.LeakyReLU(alpha=0.01))(x)

LeakyReLU的激活方式为:

LeakyReLU math expression

LeakyReLU graph

更多信息:Wikipedia - Rectifier (neural networks)

答案 1 :(得分:3)

如果你真的坚持一个单行内容,你可以使用partial()模块中的functools方法,如下所示:

import tensorflow as tf
from functools import partial

output = tf.layers.dense(input, n_units, activation=partial(tf.nn.leaky_relu, alpha=0.01))

应该注意的是partial()并不适用于所有操作,您可能必须在同一模块中尝试使用partialmethod()

希望这有助于您的努力。

答案 2 :(得分:1)

您正在尝试进行部分评估,最简单的方法是定义新功能并使用它

def my_leaky_relu(x):
    return tf.nn.leaky_relu(x, alpha=0.01)

然后你可以运行

output = tf.layers.dense(input, n_units, activation=my_leaky_relu)

答案 3 :(得分:1)

我想在tensorflow 2.0中做类似的事情,并且使用了lambda表示法,例如

output = tf.layers.dense(input, n_units, activation=lambda x : tf.nn.leaky_relu(x, alpha=0.01))

可能是将所有内容合而为一的好方法。