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=σ(W⋅x+b)
Donde:
- y: salida de la neurona;
- W: una matriz que representa los pesos asociados a las conexiones con la neurona;
- x: una matriz columna (o vector) que representa los valores de entrada a la neurona;
- b: un valor escalar;
- σ: 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.





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.
-
Determinación de formas:
- La forma de la matriz de entrada
Idebe 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
Wdebe tener sus columnas representando los pesos de entrada para cada neurona. Así, para 2 neuronas con 3 entradas, la forma esperada es3x2. Esto no es el caso, por lo que necesitas transponer la matriz de pesos para lograr la forma requerida.
- La forma de la matriz de entrada
-
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.
-
Adición de sesgo:
- Simplemente realiza una suma elemento a elemento del resultado de la multiplicación de matrices con el sesgo.
-
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
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
Ipor el primer elemento de la primera columna de la matrizW:0.5 * 0.5 = 0.25; - Multiplicar el segundo elemento de la primera fila de la matriz
Ipor el segundo elemento de la primera columna de la matrizW:0.6 * 0.4 = 0.24; - Multiplicar el tercer elemento de la primera fila de la matriz
Ipor el tercer elemento de la primera columna de la matrizW: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
Ipor el primer elemento de la segunda columna de la matrizW:0.5 * 0.1 = 0.05; - Multiplicar el segundo elemento de la primera fila de la matriz
Ipor el segundo elemento de la segunda columna de la matrizW:0.6 * 0.9 = 0.54; - Multiplicar el tercer elemento de la primera fila de la matriz
Ipor el tercer elemento de la segunda columna de la matrizW: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.
¡Gracias por tus comentarios!
single
Pregunte a AI
Pregunte a AI
Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla