Python | Tensorflow nn.softplus()

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. Una de las muchas funciones de activación es la función Softplus que se define como f(x) = ln(1 + e^x).

Las funciones de activación tradicionales, como la sigmoidea y la tangente hiperbólica, tienen límites superior e inferior, mientras que la función softplus tiene salidas en el rango (0, ∞). La derivada de la función softplus resulta serf'(x) = 1 / (1 + e^{-x}), que es la función sigmoidea. La función softplus es bastante similar a la función de unidad lineal rectificada (ReLU), con la principal diferencia de que la función softplus es diferenciable en x = 0. El artículo de investigación «Mejora de las redes neuronales profundas usando unidades softplus» de Zheng et al. (2015) sugiere que softplus proporciona más estabilización y rendimiento a las redes neuronales profundas que la función ReLU. Sin embargo, generalmente se prefiere ReLU debido a la facilidad para calcularlo y su derivado. El cálculo de la función de activación y su derivada es una operación frecuente en las redes neuronales, y ReLU proporciona una propagación hacia adelante y hacia atrás más rápida en comparación con la función softplus.

La función nn.softplus()[alias math.softplus] brinda soporte para softplus en Tensorflow.

Sintaxis : tf.nn.softplus(características, nombre=Ninguno) o tf.math.softplus(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.

Código #1:

Python3

# 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 softplus function and
# storing the result in 'b'
b = tf.nn.softplus(a, name ='softplus')
  
# 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:0", shape=(6, ), dtype=float32)
Input: [ 1.        -0.5        3.4000001 -2.0999999  0.        -6.5      ]
Return type: Tensor("softplus:0", shape=(6, ), dtype=float32)
Output: [  1.31326163e+00   4.74076986e-01   3.43282866e+00   1.15519524e-01
   6.93147182e-01   1.50233845e-03]

Código #2: Visualización

Python3

# Importing the Tensorflow library
import tensorflow as tf
  
# Importing the NumPy library
import numpy as np
  
# Importing the matplotlib.pyplot function
import matplotlib.pyplot as plt
  
# A vector of size 15 with values from -5 to 5
a = np.linspace(-5, 5, 15)
  
# Applying the softplus function and
# storing the result in 'b'
b = tf.nn.softplus(a, name ='softplus')
  
# Initiating a Tensorflow session
with tf.Session() as sess:
    print('Input:', a)
    print('Output:', sess.run(b))
    plt.plot(a, sess.run(b), color = 'red', marker = "o") 
    plt.title("tensorflow.nn.softplus") 
    plt.xlabel("X") 
    plt.ylabel("Y") 
  
    plt.show()

Producción:

Input: [-5.         -4.28571429 -3.57142857 -2.85714286 -2.14285714 -1.42857143
 -0.71428571  0.          0.71428571  1.42857143  2.14285714  2.85714286
  3.57142857  4.28571429  5.        ]
Output: [ 0.00671535  0.01366993  0.02772767  0.05584391  0.11093221  0.21482992
  0.39846846  0.69314718  1.11275418  1.64340135  2.25378936  2.91298677
  3.59915624  4.29938421  5.00671535]

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 *