Usando Tensorflow 1.5, estoy tratando de agregar la activación de leaky_relu a la salida de una capa densa mientras puedo cambiar el alpha de leaky_relu (marque aquí ). Sé que puedo hacerlo de la siguiente manera:
output = tf.layers.dense(input, n_units) output = tf.nn.leaky_relu(output, alpha=0.01) Me preguntaba si hay una manera de escribir esto en una línea como podemos hacer para relu :
ouput = tf.layers.dense(input, n_units, activation=tf.nn.relu)
Intenté lo siguiente pero me sale un error:
output = tf.layers.dense(input, n_units, activation=tf.nn.leaky_relu(alpha=0.01)) TypeError: leaky_relu() missing 1 required positional argument: 'features'¿Hay alguna forma de hacer esto?
Si está realmente convencido de una sola línea para esto, puede usar el método partial() del módulo functools , de la siguiente manera:
import tensorflow as tf from functools import partial output = tf.layers.dense(input, n_units, activation=partial(tf.nn.leaky_relu, alpha=0.01)) Cabe señalar que partial() no funciona para todas las operaciones y es posible que deba probar suerte con partialmethod() del mismo módulo.
Espero que esto te ayude en tu esfuerzo.
Al menos en TensorFlow de la versión 2.3.0.dev20200515, la activación de LeakyReLU con un parámetro alpha arbitrario se puede usar como parámetro de activation de las capas Dense :
output = tf.keras.layers.Dense(n_units, activation=tf.keras.layers.LeakyReLU(alpha=0.01))(x) La activación de LeakyReLU funciona como:
Expresión matemática LeakyReLU
Más información: Wikipedia - Rectificador (redes neuronales)
Está tratando de hacer una evaluación parcial, y la forma más fácil de hacerlo es definir una nueva función y usarla
def my_leaky_relu(x): return tf.nn.leaky_relu(x, alpha=0.01)y luego puedes correr
output = tf.layers.dense(input, n_units, activation=my_leaky_relu)