elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.


Tema destacado: (TUTORIAL) Aprende a emular Sentinel Dongle By Yapis


+  Foro de elhacker.net
|-+  Programación
| |-+  Python (Moderador: Danielㅤ)
| | |-+  [Taller/Aporte] Introduccion a Redes Neuronales Artificiles e inteligencia artificial con Python
0 Usuarios y 2 Visitantes están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [Taller/Aporte] Introduccion a Redes Neuronales Artificiles e inteligencia artificial con Python  (Leído 181 veces)
Bad4m_cod3

Desconectado Desconectado

Mensajes: 42


"a28ed83f69647d8f2a1046b9fa0e7c2c" H.P.Lovecraft


Ver Perfil
[Taller/Aporte] Introduccion a Redes Neuronales Artificiles e inteligencia artificial con Python
« en: Ayer a las 21:47 »

Clase Nº 1
IA VS ML VS DL
Dentro de la inteligencia artificial tenemos
Machine Learning (ML): Las computadoras aprenden en base a experiencias pasadas, subconjunto de este esta el
Deep Learning (DL): Crear predicciones y clasificaciones basado en redes neuronales artificiales profundas (RNA) utilizando grandes conjuntos de datos el cerebro humano esta formado por miles de millones de neuronas que se comunican entre si medientes señales electricas.

Lo que diferencia el aprendizaje profundo de las tecnicas de aprendizaje de las maquinas es su capacidad para extraer características automaticamente

Procesos Machine Learning:
  • 1. Seleccionar el modelo a entrenar
  • 2. realizar manualmente la extracción de características.

Procesos Deep Learning:
  • 1. Seleccionar la arquitectura de la red
  • 2. las características se extraen automáticamente alimentando los datos de entrenamiento junto con la clase de objectivo.

Proyecto 1: Convertir Celsius a Fahrenheit.

En este proyecto, construiremos un simple modelo de aprendizaje de máquinas para convertir las temperaturas de Celsius a Fahrenheit.
La ecuación es la siguiente

 T(ºF) = T(ºC) * (9/5) + 32
Ejemplo T(ºF) = (0ºC * 9/5) +32 = 32ºF

El objectivo es predecir el valor de una variable Y en base a otra variable X.
X se llama la variable independiente e Y se llama la variable dependiente
Esto se llama "Regresión" y se tratará con mucho mas a detalle.

Que son las Redes Neuronales Artificiales (RNA)

Son modelos de procesamiento de información inspirados en el cerebro humano. Donde tenemos un conjunto de entrenadas y nos devuelve un valor de salida.

vamos a ver cómo funcionan, tenemos el cerebro y la imagen de un gato, la imagen es un input y la funcion del cerebro es predecir que la imagen es un gato, cuando la imagen entra al cerebro (RNA) lo "correlaciona" con "experiencias pasadas" encuentra las características y reconoce. Mas el aprendizaje seria el siguiente, al analizar la imagen calcula cuando es correcto, si se equivocó o no y se genera una perdida (función de perdida) que crea una retroalimentación que se relaciona con una "Actualización de Pesos", todo pasa una y otra vez hasta que la neurona va reduciendo su funcion perdida.

Contruyamos la red más simple (Un modelo de una sola neurona)

Cargamos una lista con datos de entrenamiento (una tabla de Celsius a Fahrenheit)

Primero importamos la libreria tensorflow en python

Código
  1. import tensorflow as tf

la libreria panda que perdimite cargar el set de datos y trabajar con el en las sets de entrenamiento y prueba básicamente (base de datos y archivos)

Código
  1. import pandas as pd

la libreria numpy nos permite trabajar con matrices y matemátaicas.

Código
  1. import numpy as np

la libreria seaborn para hacer las visualizaciones de nuestro modelo.

Código
  1. import seaborn as sns

finalmente vamos a hacer splots de nuestro modelo para ver los gráficos con la libreria "matplotlib.pyplot"

Código
  1. import matploitlib.pyplot as plt

nota: en caso de no tener las librerias disponibles ejecutar el siguiente comando pip install nombre_de_la_libreria. continuamos

importamos el set de datos (base de datos) del set de entrenamiento

Código
  1. #Importando Datos
  2. temperatura_df = pd.read_csv("celsius_a_fahrenheit.cvs")

el archivo "celsius_a_fahrenheit.cvs" es un documento abierto en excel con dos colummnas, la primera en Celsius (variable independiente) y la segunda en Fahrenheit (este set de datos puede crearse automaticamente usando una macro)

Celsius/Fahrenheit
**** / ****
**** / ****
**** / ****
**** / ****
...
...
...
**** / ****

a mayor cantidad de datos mejor sera en entrenamiento en este caso.

Para la visualización de datos

Código
  1. #visualizacion
  2. sns.scatterplot(temperature_df['Celsius'],temperature_df['Fahrenheit'])

siguiente

Código
  1. #Cargando Set de Datos
  2. X_train = temperature_df['Celsius']
  3. y=train = temperature_df['Fahrenheit']

Creamos el modelo con tensorflow

Código
  1. #Creando el modelo
  2. model = tf.keras.Sequential()

Sequential() significa que vamos a crear nuestro modelo capa por capa de manera "secuencial", recordemos que las neuronas tienen puntos de entrada tienen acciones dendritas sinapsis y todo eso hace a la neurona. entonces vamos a agregar, creamos la primera capa de nuestro modelo con la variable model agregamos la capa con el subcomando ".add()" y usamos el comando "tf.keras.layers"
Código
  1. model.add(tf.keras.layers.Dense(units=1, input_shape[1]))

la capa Dense es de las capaz mas simples, donde los parametros de entrada son "units" cantidad de neuronas en este caso nos basta con solo una e "input_shape" que el valor sera tambien 1.

Cuando trabajamos con IA debemos ver el modelo, con eso vemos la red antes de trabajar.

Código
  1. model.summary()

Las redes neuronales aprenden atravez de la funcion de perdida y ajustes de pesos (sesgos)

Código
  1. #Compilado
  2. model.compile(optimizer=tf.keras.optimizers.Adam(0.5), loss='mean_squared_error')

En estadistica el error medio cuadrado es llamada desviación media cuadrada de un estimador mide el promedio de los cuadrados de los errores, es decir, la diferencia media cuadrada entre los valores estimados. El error medio cuadrado es una función de riesgo que corresponde al valor esperado de la perdida del error al cuadrado. Y lo que buscamos es la perdida del error para poder optimizar nuestra red.

Con lo anterior ya hemos compilado el modelo ahora nos falta una funcion que nos perdida entrena el modelo.
crear una funcion que nos perdima actualizar nuestros pesos corriendo atraves del set de datos para ajustar los pesos, por eso se cargo el set de datos en las variables X_train y y_train. llamos al modelo secuencia y le agregamos una neurona con la capa tipo Dense definiendo una neurona y una salida, compilamos el modelo en base a un optimizador y un modelo de errores.

Tenemos que crear una lista de epochs, el epochs es el numero de ciclos cuando se lee todo el set de entrenamiento.

Código
  1. #Entrenando el modelo
  2. epochs_hist = model.fit(x_train, y_train, epochs = 100)

el entrenamiento dura realmente poco porque estamos trabajando con regresion lineal y porque el set de datos esta definido bajo un numero relativamente pequeño de entradas y salidas (recomendable ajustar la base de datos a 30 lineas en el excel)

cuando entrenamos el modelo veremos que la optimizacion del modelo esta basado en el valor "loss" a menor sea el valor mas exacto es el modelo.

nos interesa ver el historial de entrenamiento

Código
  1. #Evaluando modelo
  2. epochs_hist.history.keys()

obtiene las llaves o claves del entrenamiento

Código
  1. #grafico
  2. plt.plot(epochs_hist.history['loss'])
  3. plt.title('Progreso de perdida durante el entrenamiento del modelo')
  4. plt.xlabel('Epoch')
  5. plt.ylabel('Training Loss')
  6. plt.legends('Training Loss')

Lo anterior muestra la evolucion al modelo respecto a numero de ciclos de entrenamiento "epochs".

obtenemos los pesos del modelo
Código
  1. model.get_weights()

Ahora nos interesa hacer prediciones, comparamos el modelo con la ecuacion "ya que existe la formala determista" con eso evaluamos la exactitud del mismo.
Código
  1. #Predicciones
  2. Temp_C = 0
  3. temp_F = model.predict([Temp_C])
  4. print(temp_F)
  5.  
  6. #formula
  7. Temp_F = (9/5)*Temp_c + 32.
  8. print(Temp_F)

y comparamos. para mejorar la prediccion podemos cambiar el modelo de compilado de 0.5 a 1
Código
  1. #Compilado
  2. model.compile(optimizer=tf.keras.optimizers.Adam(1), loss='mean_squared_error')

Con lo anterior terminamos el modelo basico para iniciar con inteligencia artificial. E aqui el codigo fuente completo.

Código
  1. import tensorflow as tf
  2. import pandas as pd
  3. import numpy as np
  4. import seaborn as sns
  5. import matplotlib.pyplot as plt
  6.  
  7. #impotando Datos
  8. temperature_df = pd.read_csv("celsius_a_fahrenheit.csv")
  9.  
  10. #Visualizacion
  11. sns.scatterplot(temperature_df['celsius'], temperature_df['fahrenheit'])
  12.  
  13. #Cargando Set de Datos
  14. X_train = temperature_df['Celsius']
  15. y_train = temperature_df['Fahrenheit']
  16.  
  17. #Creando el modelo
  18. model = tf.keras.sequential()
  19. model.add(tf.keras.layers.DEnse(units=1, input_shape=[1]))
  20.  
  21. model.summaryÇ()
  22.  
  23. #compilado
  24. model.compile(optimizar=tf.keras.optimizers.Adam(1),loss='mean_squared_error')
  25.  
  26. #Entrenando el modelo
  27. epochs_hist = model.fit(x_train, y_train, epochs=100)
  28.  
  29. #Evaluando modelo
  30. epochs_hist.history.keys()
  31.  
  32. #gafico
  33. plt.plot(epochs_hist.history['loss'])
  34. plt.title('Progreso de perdida durante el entrenamiento del modelo')
  35. plt.xlabel('Epoch')
  36. plt.ylabel('Training Loss')
  37. plt.legends('Training Loss')
  38.  
  39. model.get_weights()
  40.  
  41. #Predicciones
  42. Temp_C = 0
  43. temp_F = model.predict([Temp_C])
  44. print(temp_F)
  45.  
  46. #formula
  47. Temp_F = (9/5)*Temp_c + 32.
  48. print(Temp_F)

Saludos


En línea

809219e8548c7feaa7cf844281a1d8e4a85f37bd34cc3839cf6498aaaa23dc8c
(Bad4m_cod3 estuvo aqui.)
Tachikomaia


Desconectado Desconectado

Mensajes: 1.536


Hackentifiko!


Ver Perfil
Re: [Taller/Aporte] Introduccion a Redes Neuronales Artificiles e inteligencia artificial con Python
« Respuesta #1 en: Hoy a las 07:36 »

Simplemente para que sepas, me interesa pero no lo entiendo. Podría decir que falta ver un ejemplo, el resultado, lo gráfico de eso ya que se habla de algo gráfico, pero creo que ni así lo entendería.


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines