Aún no tienes acceso a esta clase

Crea una cuenta y continúa viendo este curso

Entrenamiento forward de la red neuronal

15/28
Recursos

Aportes 8

Preguntas 1

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesión.

Forward Function

Me encanta hasta ahora de lo que va del curso como se empezó de golpe a explicar como hacer una red neuronal con Keras y como ha ido poco a poco explicando cada cosa.

Hola a todos, me gustaría mucho aportar estas dos imágenes que realice para dejar un poco más claro la arquitectura de este ejercicio y segundo algunas dudas que quizá pueden surgir:

En la imagen se observa como la matriz de entrada tiene una dimensión de 1000x2 (nxm) donde n es la cantidad de muestras para realizar el entrenamiento y m la cantidad de características por cada muestra.

La primera capa consta de 4 neuronas, por tanto la matriz que representa los pesos sinápticos debe de ser de nxCn donde n sigue siendo la cantidad de características usadas por cada muestra y Cn la cantidad de neuronas usadas en esta capa. La salida como bien menciona el profesor en el video al multiplicar la matriz de características (1000x2) con la matriz de pesos sinápticos (2x4) de la primera capa tendrá una dimensión salida de 1000x4 donde cada fila tendrá 4 columnas las cuales serán la salida individual de cada neurona 1, 2, 3 y 4 para cada muestra.

El mismo proceso se repite para la siguiente capa, la cual se tendrá que multiplicar con una matriz de pesos sinápticos de 4x8 donde 4 son los valores cada uno de los valores que salen de las 4 neuronas que alimentan a las 8 neuronas siguientes. Lo anterior generando una matriz de 1000x8.

Finalmente en la última capa se multiplica por los pesos sinápticos de la capa de salida (única neurona) que deberá de tener una dimensión de 8x1, obteniendo una matriz final de resultado de dimensión 1000x1.

En la primera imagen dibujé todo lo relacionado a la primera capa, lo demás lo deje incompleto por la falta de espacio, pero creo que con una sola capa se entiende las demás dado que es el mismo proceso prácticamente solo que cambia la cantidad de neuronas y en la capa de salida la función de activación.

Un gran saludo.

Otra forma de realizar una operación de producto punto es:

X.dot(params['W1'])

producto punto metido en la funcion de activacion y iteracion

Para multiplicar matrices:

X @ params["W1"]
  • El entrenamiento inicia analizando y tomando los parámetros que hayamos en la creacion de la red neuronal

  • Producto punto

    El producto punto es la forma en que podemos manegar nuestros pesos y parametros

    np.matmul(X,params['W1'])
    
    entrega
    
    array([[ 0.27393107,  0.41550962,  0.14988944,  0.2624036 ],
           [-0.14713836, -0.38778106, -0.10876271, -0.34705941],
           [ 0.05797307, -0.02410487,  0.01249071, -0.08476814],
           ...,
           [-0.10742151, -0.16628473, -0.05935272, -0.10708787],
           [ 0.23753234,  0.53896604,  0.16063974,  0.45127066],
           [-0.28509678, -0.10407463, -0.09963654,  0.13809973]])
    

    Tambien podemos usar [email protected]['W1'] para el mismo resultado que con np.matmul

  • Entrenamiento

    params
    params['A0'] = X # entrada de los valores
    
    params['Z1']= np.matmul(params['A0'], params['W1']) + params['b1']  #El producto punto de los parametros con el peso  mas el vayas #informacion mas rica y detallada
    params['A1'] =relu(params['Z1']) # Funcion de activacion
    
    params['Z2']= np.matmul(params['A1'], params['W2']) + params['b2']  # Recibi el analisis de la anterior neurona
    params['A2'] =relu(params['Z2']) # el facil de usar, tiene derivada 
    
    params['Z3']= np.matmul(params['A2'], params['W3']) + params['b3']  #El producto punto de los parametros con el peso  mas el vayas #informacion mas rica y detallada
    params['A3'] = sigmoid(params['Z3']) # Funcion de activacion
    
    output = params['A3']
    
  • Output

    output

    entrega