Python | Tensorflow nn.relu() y nn.leaky_relu()

Tensorflow es una biblioteca de aprendizaje automático de código abierto desarrollada por Google. Una de sus aplicaciones es desarrollar redes neuronales profundas. El módulo tensorflow.nnproporciona soporte para muchas operaciones básicas de redes neuronales.

Una función de activación es una función que se aplica a la salida de una capa de red neuronal, que luego se pasa como entrada a la siguiente capa. Las funciones de activación son una parte esencial de las redes neuronales ya que proporcionan no linealidad, sin la cual la red neuronal se reduce a un mero modelo de regresión logística. La función de activación más utilizada es la Unidad Lineal Rectificada (ReLU). ReLU se define como f(x) = max(0, x). ReLU se ha convertido en una opción popular en los últimos tiempos debido a las siguientes razones:

  • Computacionalmente más rápido : ReLU es una función altamente simplificada que se calcula fácilmente.
  • Menos gradientes que desaparecen : en el aprendizaje automático, la actualización de un parámetro es proporcional a la derivada parcial de la función de error con respecto a esos parámetros. Si el gradiente se vuelve extremadamente pequeño, las actualizaciones no serán efectivas y la red podría dejar de entrenar. El ReLU no se satura en la dirección positiva, mientras que otras funciones de activación como la tangente hiperbólica y sigmoidea se saturan en ambas direcciones. Por lo tanto, tiene menos gradientes que se desvanecen, lo que resulta en un mejor entrenamiento.

La función nn.relu()brinda soporte para ReLU en Tensorflow.

Sintaxis : tf.nn.relu(características, nombre=Ninguno)

Parámetros :
características : un tensor de cualquiera de los siguientes tipos: float32, float64, int32, uint8, int16, int8, int64, bfloat16, uint16, half, uint32, uint64.
nombre (opcional): el nombre de la operación.

Tipo de retorno : Un tensor con el mismo tipo que el de características.

# Importing the Tensorflow library
import tensorflow as tf
  
# A constant vector of size 6
a = tf.constant([1.0, -0.5, 3.4, -2.1, 0.0, -6.5], dtype = tf.float32)
  
# Applying the ReLu function and
# storing the result in 'b'
b = tf.nn.relu(a, name ='ReLU')
  
# Initiating a Tensorflow session
with tf.Session() as sess:
    print('Input type:', a)
    print('Input:', sess.run(a))
    print('Return type:', b)
    print('Output:', sess.run(b))

Producción:

Input type: Tensor("Const_10:0", shape=(6, ), dtype=float32)
Input: [ 1.        -0.5        3.4000001 -2.0999999  0.        -6.5      ]
Return type: Tensor("ReLU_9:0", shape=(6, ), dtype=float32)
Output: [ 1.         0.         3.4000001  0.         0.         0.       ]

 
ReLU con fugas:
la función ReLU sufre lo que se denomina el problema de «ReLU moribundo». Dado que la pendiente de la función ReLU en el lado negativo es cero, es poco probable que una neurona atrapada en ese lado se recupere. Esto hace que la neurona emita cero por cada entrada, lo que la vuelve inútil. Una solución a este problema es usar Leaky ReLU que tiene una pequeña pendiente en el lado negativo.

La función nn.leaky_relu()brinda soporte para ReLU en Tensorflow.

Sintaxis : tf.nn.leaky_relu(características, alfa, nombre=Ninguno)

Parámetros :
características : un tensor de cualquiera de los siguientes tipos: float32, float64, int32, uint8, int16, int8, int64, bfloat16, uint16, half, uint32, uint64.
alfa : la pendiente de la función para x < 0. El valor predeterminado es 0,2.
nombre (opcional): el nombre de la operación.

Tipo de retorno : Un tensor con el mismo tipo que el de características.

# Importing the Tensorflow library
import tensorflow as tf 
  
# A constant vector of size 6
a = tf.constant([1.0, -0.5, 3.4, -2.1, 0.0, -6.5], dtype=tf.float32)
  
# Applying the Leaky ReLu function with
# slope 0.01 and storing the result in 'b'
b = tf.nn.leaky_relu(a, alpha=0.01, name='Leaky_ReLU')
  
# Initiating a Tensorflow session
with tf.Session() as sess: 
    print('Input type:', a)
    print('Input:', sess.run(a))
    print('Return type:', b)
    print('Output:', sess.run(b))

Producción:

Input type: Tensor("Const_2:0", shape=(6,), dtype=float32)
Input: [ 1.        -0.5        3.4000001 -2.0999999  0.        -6.5      ]
Return type: Tensor("Leaky_ReLU_1/Maximum:0", shape=(6,), dtype=float32)
Output: [ 1.        -0.005      3.4000001 -0.021      0.        -0.065    ]

Publicación traducida automáticamente

Artículo escrito por vaibhav29498 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *