Simulacion de una red neuronal 1
Вставка
- Опубліковано 1 бер 2024
- Simulacion de una red neuronal 1
Se crea un modelo secuencial.
La red neuronal tiene una capa oculta con 1000 neuronas y activación ReLU, y una capa de salida con 1 neurona y activación lineal.
Inicializar listas para almacenar datos: Aquí es donde se crean las listas vacías para almacenar los datos. En este punto, no se ha mencionado específicamente xi, pero es un paso común para preparar estructuras para almacenar los datos.
El siguiente código implementa una red neuronal artificial (RNA) utilizando el concepto de neuronas artificiales.
import matplotlib.pyplot as plt
from keras.models import Sequential
from keras.layers import Dense
from math import sin, pi
Inicializar listas para almacenar datos
xi_vals = []
y_vals_real = []
Generar datos para xi y la función seno con un bucle for
for i in range(1001):
xi = i / 1000
xi_vals.append(xi)
y_vals_real.append(sin(4 * pi * xi)) # Utilizamos la función seno de Python directamente
Crear un modelo de red neuronal con una capa oculta de 1000 neuronas
modelo = Sequential()
modelo.add(Dense(units=1000, input_dim=1, activation='relu')) # Capa oculta con 1000 neuronas y función de activación ReLU
modelo.add(Dense(units=1, activation='linear')) # Capa de salida con 1 neurona y función de activación lineal
Compilar el modelo
modelo.compile(loss='mean_squared_error', optimizer='adam')
Entrenar el modelo
modelo.fit(xi_vals, y_vals_real, epochs=1000, verbose=0) # Usamos xi_vals como entrada y y_vals_real como salida para aproximar la función Seno
Realizar predicciones con el modelo entrenado
y_pred = modelo.predict(xi_vals)
Dibujar el gráfico
plt.plot(xi_vals, y_vals_real, label='Función Seno (Real)')
plt.plot(xi_vals, y_pred, label='Aproximación de la IA')
plt.title('Aproximación de la Función Seno con IA (Red Neuronal con Capa Oculta de 1000 Neuronas)')
plt.xlabel('Eje X')
plt.ylabel('Eje Y')
plt.legend()
plt.show()
Explicacion del código.
Este código en Python utiliza la biblioteca Keras para implementar una red neuronal que aproxima la función seno. A continuación, se proporcionara una explicación paso a paso del código:
import matplotlib.pyplot as plt
from keras.models import Sequential
from keras.layers import Dense
from math import sin, pi
matplotlib.pyplot: Se utiliza para trazar gráficos y visualizar los resultados.
Sequential y Dense de keras.models: Estas clases son utilizadas para definir y construir el modelo de la red neuronal.
sin y pi de math: Se usan para calcular la función seno
Inicializar listas para almacenar datos:
xi_vals = []
y_vals_real = []
xi_vals: Almacena los valores de entrada (xi) para la función seno.
y_vals_real: Almacena los valores reales de la función seno
Generar datos para xi y la función seno:
for i in range(1001):
xi = i / 1000
xi_vals.append(xi)
y_vals_real.append(sin(4 * pi * xi))
Este código parece ser un bucle que itera sobre valores de i en el rango de 0 a 1000 (inclusive) y realiza algunas operaciones en cada iteración. Veamos paso a paso:
La función range(1001) incluye el 0 y va hasta 1000, por lo que hay 1001 elementos en total (0, 1, 2, ..., 1000). En consecuencia, el bucle se ejecutará 1001 veces, y en cada iteración, se realizarán las operaciones mencionadas anteriormente para cada valor de i en el rango de 0 a 1000, inclusive.
for i in range(1001): Este bucle for itera sobre valores de i desde 0 hasta 1000 (inclusive). En cada iteración, se ejecutará el bloque de código siguiente.
xi = i / 1000 En cada iteración, se calcula el valor de xi dividiendo el valor de i entre 1000. Este cálculo parece estar normalizando i para obtener valores en el rango de 0 a 1.
xi_vals.append(xi) El valor calculado de xi se agrega a una lista llamada xi_vals. Esta lista probablemente se utiliza para almacenar los valores de xi calculados en cada iteración del bucle.
y_vals_real.append(sin(4 * pi * xi)) Aquí, se calcula el seno de 4 * pi * xi utilizando una función sin. El resultado se agrega a otra lista llamada y_vals_real. Este cálculo sugiere que el código está generando valores de la función seno para cada valor de xi.
En resumen, este código está generando una serie de valores xi normalizados en el rango [0, 1] y calcula los valores correspondientes de la función seno para la expresión 4 * pi * xi, almacenando tanto los valores de xi como los valores del seno en las listas xi_vals y y_vals_real, respectivamente. La aplicación específica de estos valores dependerá del contexto más amplio del programa en el que se encuentre este fragmento de código. Además, ten en cuenta que para que este código funcione correctamente, deberías importar la función sin y la constante pi desde el módulo math.
Crear un modelo de red neuronal:
modelo = Sequential()
modelo.add(Dense(units=1000, input_dim=1, activation='relu'))
modelo.add(Dense(units=1, activation='linear'))
Esta muy bueno, gracias por compartirlo