使用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)
有办法做到这一点吗?
答案 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
的激活方式为:
答案 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))
可能是将所有内容合而为一的好方法。