viernes, 23 de noviembre de 2012

Reporte 3


Reporte 3


 Perceptrón que reconoce un "and"

El Perceptrón es un tipo de red neuronal artificial, también puede entenderse como perceptrón la neurona artificial y unidad básica de inferencia en forma de discriminador lineal, que constituye este modelo de red neuronal artificial, esto debido a que el perceptrón puede usarse como neurona dentro de un perceptrón más grande u otro tipo de red neuronal artificial.

Este es un ejemplo de entrenamiento de Perceptron para el caso de NAND, con un umbral, sesgo y tasa de aprendizaje predeterminados.

threshold = 0.5
learning_rate = 0.1
weights = [0, 0, 0]
training_set = [((1, 0, 0), 1), ((1, 0, 1), 1), ((1, 1, 0), 1), ((1, 1, 1), 0)]
 
def sum_function(values):
    return sum(value * weight for value, weight in zip(values, weights))
 
while True:
    print '-' * 60
    error_count = 0
    for input_vector, desired_output in training_set:
        print weights
        result = 1 if sum_function(input_vector) > threshold else 0
        error = desired_output - result
        if error != 0:
            error_count += 1
            for index, value in enumerate(input_vector):
                weights[index] += learning_rate * error * value
    if error_count == 0:
        break





El objetivo de esta practica es modificar  el código  que para el caso de “and”. Modificar los pesos iniciales, la tasa de aprendizaje y el umbral.

A continuación la replica del perceptron con las modificaciones necesarias para el caso AND.



umbral = 0  
tasa = 0.09
pesos = [0, 0, 1]
entrenamientoAND = [((1, 0, 0), 0), ((1, 0, 1), 0), ((1, 1, 0), 0), ((1, 1, 1), 1)]
 
def sum_function(values):
    return sum(value * weight for value, weight in zip(values, pesos))
 
while True:
    print '-' * 60
    error_count = 0
    for input_vector, desired_output in entrenamientoAND:
        print pesos
        result = 1 if sum_function(input_vector) > umbral else 0
        error = desired_output - result
        if error != 0:
            error_count += 1
            for index, value in enumerate(input_vector):
                pesos[index] += tasa * error * value
    if error_count == 0:
        break


Video

No hay comentarios:

Publicar un comentario