Tutorial de redes neurales con Neurolab

Neurolab es una librería simple y poderosa de Redes Neurales para Python. Contiene una serie de redes neurales implementadas, algoritmos de entrenamiento y una plataforma flexible para crear y explorar otras redes. Funciona con puro python + numpy, no se requiere definir otros set de datos. 

¿Cómo instalar Neurolab?

Si no tienes Linux, puedes instalar Neurolab desde wakari.io, simplemente tipeando el siguiente texto desde el shell virtual de Linux en Wakari:

pip install neurolab
wakari.png

 

Desarrollo de una red neural

Este ejercicio muestra la implementación de una red neural de 2 neurones de entrada, 5 capas y 1 de salida.

Primero importamos los paquetes relacionados:

In[]: import numpy as np
import neurolab as nl

Creamos muestras de entrenamiento de ingreso

In[]:
ingreso = np.random.uniform(-0.5,0.5, (10,2))
ingreso

Out[]:
array([[ 0.34769359, -0.24359918],
 [-0.35677022,0.15621207],
 [-0.47194778, -0.39903655],
 [ 0.04687558, -0.12720131],
 [-0.17015721, -0.18486646],
 [ 0.20996324,0.06204419],
 [-0.44934782, -0.01873975],
 [ 0.43563669, -0.06144173],
 [ 0.19092297,0.179511],
 [ 0.15973559, -0.19709443]])

Creamos muestras de entrenamiento de salida

In[]:
objetivo = (input[:,0] + input[:,1]).reshape(10,1)
objetivo

Out[]:
array([[ 0.02733165],
 [ 0.32419235],
 [-0.0541421 ],
 [-0.27353072],
 [-0.39558786],
 [ 0.16621385],
 [ 0.24535418],
 [-0.68187408],
 [-0.37592824],
 [-0.41389945]])

Creamos una red de 2 ingresos, 5 neurones en la capa escondida y 1 de salida

In[]:
redneural = nl.net.newff([[-0.5, 0.5], [-0.5, 0.5]], [5,1])

Empezamos el proceso de entrenamiento

In[]:
error = redneural.train(input, target, show=1)

Out[]:
Epoch: 1; Error: 1.07472182895;
Epoch: 2; Error: 0.844945977139;
Epoch: 3; Error: 0.477601474142;
Epoch: 4; Error: 0.246202460066;
Epoch: 5; Error: 0.161026147139;
Epoch: 6; Error: 0.125951105733;
Epoch: 7; Error: 0.0964905737339;
Epoch: 8; Error: 0.0535869139293;
Epoch: 9; Error: 0.0238785838849;
Epoch: 10; Error: 0.0131472815485;
Epoch: 11; Error: 0.009583181488;
The goal of learning is reached

Ensayo para un set de datos de 0.2 + 0.1, debería salir 0.3

In[]:
redneural.sim([[0.2,0.1]])

Out[]:
array([[ 0.27848067]])
Simulación de la red neural desde Wakari

Simulación de la red neural desde Wakari

Footer_Suscribirse.png

Suscríbase a nuestro boletín gratuito para recibir noticias, datos interesantes y fechas de nuestros cursos en recursos hídricos.

Posted on May 14, 2014 and filed under Hidroinformática, Tutorial.