Función softmax en TensorFlow

Autor: | Última modificación: 9 de agosto de 2022 | Tiempo de Lectura: 3 minutos
Temas en este post:

Saber qué es y cómo funciona una de las alternativas más importantes como lo es la función softmax en TensorFlow se presenta como un requisito de todo buen data scientist que pretenda convertirse en un experto en el mundo del Deep Learning. Si estás interesado, ¡este post es ideal para ti!

En efecto, en el desarrollo de este artículo te expondremos todo lo relacionado con la función softmax en TensorFlow, de manera que la conozcas de forma tanto teórica como práctica para implementarla de manera efectiva.

Función softmax en TensorFlow

La función softmax en TensorFlow se presenta como una alternativa a la función de típica sigmodea de G = sigmoid(). En definitiva, la función softmax en TensorFlow para el procesamiento de los datos implica:

  • Convertir los datos procesados en probabilidades.
  • Que la suma de las probabilidades tenga como resultado un 1.

Por otra parte, la fórmula de la función softmax en TensorFlow es la siguiente:

Función softmax en TensorFlow 1

Ejemplo función softmax en TensorFlow

# Necesitamos también un placeholder para la etiqueta de la imagen, con la que 
# compararemos nuestra predicción
y_true = tf.placeholder(tf.float32, [None, n_output])

# Definimos nuestra función de pérdidas: la entropía cruzada
cross_entropy = -tf.reduce_sum(y_true * tf.log(net_output))

# Comprobamos si nuestra predicción es igual a la etiqueta
idx_prediction = tf.argmax(net_output, 1)
idx_label = tf.argmax(y_true, 1)
correct_prediction = tf.equal(idx_prediction, idx_label)

# Definimos nuestra medida de precisión como el número de aciertos con respecto 
# al número de muestras predichas
accuracy = tf.reduce_mean(tf.cast(correct_prediction, "float"))

# Ahora indicamos que queremos minimizar nuestra función de pérdidas (la entropía
# cruzada) usando el algoritmo del descenso del gradiente y con una tasa de 
# aprendizaje = 0.01.
optimizer = tf.train.GradientDescentOptimizer(0.01).minimize(cross_entropy)
# Ahora lo tenemos todo listo para ejecutar el grafo.

# Esto es necesario para poder escribir continuamente en la misma línea
from IPython.display import clear_output

with tf.Session() as sess:

  sess.run(tf.global_variables_initializer())

  # Ahora entrenamos nuestro regresor
  batch_size = 10  # le introducimos las imágenes de 10 en 10
  for sample_i in range(mnist.train.num_examples):
    sample_x, sample_y = mnist.train.next_batch(batch_size)
    sess.run(optimizer, feed_dict={net_input: sample_x, 
                                   y_true: sample_y})

    # Comprobamos cómo va funcionando nuestro regresor con el conjunto de validación
    if sample_i < 50 or sample_i % 200 == 0:
      val_acc = sess.run(accuracy, feed_dict={net_input: mnist.validation.images,
                                              y_true: mnist.validation.labels})
      print("({}/{}) Acc: {}".format(sample_i, mnist.train.num_examples, val_acc))

  # Cuando ya ha visto todas las muestras del conjunto de entrenamiento, 
  # mostramos la precisión final con el conjunto de test
  print('Teste accuracy: ', sess.run(accuracy, feed_dict={net_input: mnist.test.images,
                                      y_true: mnist.test.labels}))
Función softmax en TensorFlow 2
Función softmax en TensorFlow 3
Función softmax en TensorFlow 4
Función softmax en TensorFlow 5
Función softmax en TensorFlow 6
Función softmax en TensorFlow 7

¡Con esto ya puedes entrenar tu primera RED NEURONAL con TensorFlow!

En este proceso, hemos implementado una regresión logística con la formula y = G(Wx + b), donde G = softmax() ,en vez de la típica G = sigmoid(). Pues bien, si te fijas en la siguiente imagen, en la que se define el perceptrón (una red neuronal de una sola capa) podréis comprobar como output = Activation_function(Wx).

¿Lo ves? ¡Solo falta la bias! ¿Y te has fijado en que en la entrada hay un 1? Por tanto, el peso w0 no se ve multiplicado por nada. En efecto, el peso w0 es la bias, que aparece con esta notación simplemente para poder implementarlo en forma de multiplicación matricial.

Función softmax en TensorFlow 8

En definitiva, lo que acabamos de implementar es un perceptrón con un batch_size = 10, 1 época, gradien descent como optimizador y la función softmax en TensorFlow como función de activación.

Aprende más sobre el Big Data

En el desarrollo de este post, te has podido familiarizar con todo lo relacionado a la función softmax en TensorFlow; sin embargo, debes tener en cuenta que esta es tan solo una de las alternativas que puedes considerar en el procesamiento de los macrodatos por medio de este tipo de framework para el Deep Learning.

Desde KeepCoding, sabemos que instruirte por tu cuenta puede resultar complicado y aburrido, por ello, te presentamos el Bootcamp Full Stack Big Data, Inteligencia Artificial & Machine Learning. Por medio de esta formación íntegra e intensiva, podrás contar con todos los conocimientos necesarios para ser un experto en el ecosistema de sistemas, lenguajes y herramientas del Big Data a la par que los llevas a la práctica guiado por gran un grupo de profesionales. ¡No esperes más para inscribirte!

👉 Descubre más del Big Data, Inteligencia Artificial & Machine Learning Full Stack Bootcamp ¡Descarga el temario!

👉 Prueba el Bootcamp Gratis por una Semana ¡Empieza ahora mismo!

👉 Conoce nuestros otros Bootcamps en Programación y Tecnología

[email protected]

¿Sabías que hay más de 5.000 vacantes para desarrolladores de Big Data sin cubrir en España? 

En KeepCoding llevamos desde 2012 guiando personas como tú a áreas de alta empleabilidad y alto potencial de crecimiento en IT con formación de máxima calidad.

 

Porque creemos que un buen trabajo es fuente de libertad, independencia, crecimiento y eso ¡cambia historias de vida!


¡Da el primer paso!