Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprende Creación de una Capa de Red Neuronal | Fundamentos de TensorFlow
Introducción a TensorFlow
Sección 3. Capítulo 1
single

single

Creación de una Capa de Red Neuronal

Desliza para mostrar el menú

Capa única de red neuronal

En una red neuronal feed-forward básica, la salida de una neurona en una capa se calcula utilizando la suma ponderada de sus entradas, pasada a través de una función de activación. Esto se puede representar como:

y=σ(Wx+b)y=\sigma(W \cdot x + b)

Donde:

  • yy: salida de la neurona;
  • WW: una matriz que representa los pesos asociados a las conexiones con la neurona;
  • xx: una matriz columna (o vector) que representa los valores de entrada a la neurona;
  • bb: un valor escalar;
  • σ\sigma: una función de activación, como la función sigmoide, ReLU o softmax.

Para lograr el mejor rendimiento, todos los cálculos se realizan utilizando matrices. Abordaremos esta tarea de la misma manera.

carousel-imgcarousel-imgcarousel-imgcarousel-imgcarousel-img
Tarea

Desliza para comenzar a programar

Dados los pesos, las entradas y el sesgo para una capa de una sola neurona, calcular su salida utilizando multiplicación de matrices y la función de activación sigmoide. Considera una capa con 3 entradas y 2 neuronas, tomando un solo lote que contiene solo una muestra.

  1. Determinación de formas:

    • La forma de la matriz de entrada I debe tener su primera dimensión representando el número de muestras en el lote. Dada una muestra con 3 entradas, su tamaño será 1x3;
    • La matriz de pesos W debe tener sus columnas representando los pesos de entrada para cada neurona. Así, para 2 neuronas con 3 entradas, la forma esperada es 3x2. Esto no es el caso, por lo que necesitas transponer la matriz de pesos para lograr la forma requerida.
  2. Multiplicación de matrices:

    • Con las matrices en la forma correcta, realiza la multiplicación de matrices;
    • Recuerda que en la multiplicación de matrices, la salida se deriva del producto punto de cada fila de la primera matriz con cada columna de la segunda matriz. Asegúrate de multiplicar en el orden correcto.
  3. Adición de sesgo:

    • Simplemente realiza una suma elemento a elemento del resultado de la multiplicación de matrices con el sesgo.
  4. Aplicación de la activación:

    • Utiliza la función de activación sigmoide sobre el resultado de la suma del sesgo para obtener la salida de la neurona;
    • TensorFlow proporciona la función sigmoide como tf.sigmoid().

Nota

Al final del curso profundizaremos en la implementación de una red de avance completo utilizando TensorFlow. Este ejercicio sienta las bases para ello.

Solución

Descripción del código
expand arrow

Definir pesos de la capa, entradas de la capa y sesgo de la capa

Aquí, se están definiendo los pesos, las entradas y el sesgo para la capa. Se utiliza tf.Variable() para los pesos y el sesgo ya que estos son parámetros entrenables en las redes neuronales, y tf.constant() para la entrada ya que permanece sin cambios durante el entrenamiento. Se establece dtype=tf.float64 para obtener la mejor precisión.

W = tf.Variable([[0.5, 0.4, 0.7], [0.1, 0.9, 0.5]], dtype=tf.float64)

Esta es la matriz de pesos para la capa neuronal. Cada fila representa los pesos de una neurona con respecto a cada entrada.

I = tf.constant([[0.5, 0.6, 0.1]], dtype=tf.float64)

Esta es la matriz de entrada, que representa una sola muestra con 3 características.

b = tf.Variable(0.1, dtype=tf.float64)

Este es el valor de sesgo. Es un escalar que se suma a la suma ponderada antes de pasar por la función de activación.

W = tf.transpose(W)

Los pesos están organizados en filas, pero para la multiplicación de matrices, deben estar en columnas. Por lo tanto, transponemos la matriz. Después de esto, la primera columna corresponde a los pesos de la primera neurona y la segunda columna a los de la segunda neurona.

weighted_sum = tf.matmul(I, W)

Aquí, calculamos la multiplicación de matrices de la entrada y la matriz de pesos transpuesta. Esto nos da la suma ponderada de las entradas.

Desglosemos esta multiplicación de matrices paso a paso:

Determinar la forma de la matriz resultante:

La matriz resultante tendrá el número de filas de la primera matriz (matriz I con forma 1x3) y el número de columnas de la segunda matriz (matriz W con forma 3x2). Así, la matriz resultante será de forma 1x2.

Proceso de multiplicación de matrices:

Para el primer elemento de la matriz resultante (llamémoslo S[0][0] para "suma ponderada"):

  • Multiplicar el primer elemento de la primera fila de la matriz I por el primer elemento de la primera columna de la matriz W: 0.5 * 0.5 = 0.25;
  • Multiplicar el segundo elemento de la primera fila de la matriz I por el segundo elemento de la primera columna de la matriz W: 0.6 * 0.4 = 0.24;
  • Multiplicar el tercer elemento de la primera fila de la matriz I por el tercer elemento de la primera columna de la matriz W: 0.1 * 0.7 = 0.07;
  • Sumar estos productos: 0.25 + 0.24 + 0.07 = 0.56.

Así, S[0][0] es 0.56.

Para el segundo elemento de la matriz resultante (S[0][1]):

  • Multiplicar el primer elemento de la primera fila de la matriz I por el primer elemento de la segunda columna de la matriz W: 0.5 * 0.1 = 0.05;
  • Multiplicar el segundo elemento de la primera fila de la matriz I por el segundo elemento de la segunda columna de la matriz W: 0.6 * 0.9 = 0.54;
  • Multiplicar el tercer elemento de la primera fila de la matriz I por el tercer elemento de la segunda columna de la matriz W: 0.1 * 0.5 = 0.05;
  • Sumar estos productos: 0.05 + 0.54 + 0.05 = 0.64.

Así, S[0][1] es 0.64.

Por lo tanto, la matriz resultante S de multiplicar la matriz I y la matriz W es:

[ [0.56, 0.64] ]
biased_sum = weighted_sum + b

El sesgo se suma a la suma ponderada. Esto es una forma de transformación afín que desplaza el resultado para lograr un mejor ajuste durante el entrenamiento.

neuron_output = tf.sigmoid(biased_sum)

La función sigmoide comprime el valor entre 0 y 1, asegurando que nuestra salida esté en un rango normalizado. Es comúnmente utilizada en problemas de clasificación binaria.

Switch to desktopCambia al escritorio para practicar en el mundo realContinúe desde donde se encuentra utilizando una de las siguientes opciones
¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 3. Capítulo 1
single

single

Pregunte a AI

expand

Pregunte a AI

ChatGPT

Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla

some-alt