Red Neuronal
Antes comenzar a programar una red neural es conveniente retomar que es a grandes rasgos una red neuronal.
Una red neuronal es grandes rasgos un sistema que imita a como pensamos los seres humanos, por medio de neuronas unidas por conexiones donde cada conexión tiene un peso asociado.
La idea es sencilla una red neuronal va a probar resultados una cierta cantidad de veces (que nosotros indiquemos), es decir, se va a ir entrenando hasta mejorar el resultado de la predicción.
Topología de una red neuronal
Entrada: Tenemos una entrada o varias de datos que necesitamos procesar con un fin, por ejemplo una imagen es la entrada y la salida seria indicar cuantos objetos rojos tenemos.
Capa de Entrada: La capa de entrada no realiza ninguna operación de procesamiento en los datos de entrada, simplemente los pasa a la siguiente capa de la red neuronal. Su función es proporcionar una representación inicial de los datos para que las capas siguientes puedan empezar a realizar operaciones más complejas para extraer características y aprender patrones.
Capa oculta: Las capas ocultas son aquellas que se encuentran entre la capa de entrada y la capa de salida en una red neuronal. Estas capas realizan transformaciones no lineales de los datos de entrada, lo que permite que la red neuronal aprenda características más abstractas y complejas de los datos. Cada capa oculta está formada por un número determinado de neuronas que aplican transformaciones a los datos.
Capa de Salida: Esta es la capa final de una red neuronal y su función es producir los resultados deseados o las predicciones basadas en las entradas y en las transformaciones realizadas por las capas ocultas. En el ejemplo que has dado, donde se busca contar el número de objetos rojos en una imagen, la capa de salida podría tener una sola neurona que represente el conteo de objetos rojos.
Programación en Python.
Si bien es difícil comprender todos los detalles de una red neuronal, existen herramientas como la biblioteca TensorFlow que nos ahorran mucho trabajo, para ello antes de comenzar a programar debes asegurarte de que tenerla instalada.
En caso de no tenerla utiliza la siguiente instrucción en tu entorno para descargarla:
pip install tensorflow
Una vez instalado TensorFlow nuestro objetivo es programar una red neuronal que resuelva la ecuación de la recta ax+b, con a = 2 y b = 1. nutra red neuronal será la siguiente:
El código en Python:
import tensorflow as tf
# Datos de entrada y salida
X_train = [[1], [2], [3], [4], [5]] # Valores de x
y_train = [[3], [5], [7], [9], [11]] # Valores de ax + b, con a = 2 y b = 1
# Definir la capa densa
capa = tf.keras.layers.Dense(units=3, input_shape=[1])
# Construir el modelo secuencial con la capa definida
modelo = tf.keras.Sequential([capa])
# Compilar el modelo
modelo.compile(
optimizer=tf.keras.optimizers.Adam(0.1), # Utilizando el optimizador Adam con una tasa de aprendizaje de 0.1
loss='mean_squared_error' # Utilizando la función de pérdida de error cuadrático medio
)
print("Comenzando entrenamiento...")
# Entrenar el modelo
historial = modelo.fit(X_train, y_train, epochs=1000, verbose=False)
print("Modelo entrenado!")
# Hacer una predicción para un valor de entrada x=100
print("Predicción")
x = 100
resultado = modelo.predict([x])
print("X = " + str(x) + ", El resultado es " + str(resultado))
Resultado:
X= 100 El resultado es [[200.99986 200.99992 200.99982]]