<s> __author__ = """<STR_LIT>""" <EOL> if __name__ == '<STR_LIT:__main__>' : <EOL> from os import getcwd <EOL> from os import sys <EOL> sys . path . append ( getcwd ( ) ) <EOL> from MOAL . helpers . display import Section <EOL> from random import choice <EOL> from numpy import array , dot , random <EOL> DEBUG = True if __name__ == '<STR_LIT:__main__>' else False <EOL> """<STR_LIT>""" <EOL> unit_step = lambda x : <NUM_LIT:0> if x < <NUM_LIT:0> else <NUM_LIT:1> <EOL> training_data_or = [ <EOL> ( array ( [ <NUM_LIT:0> , <NUM_LIT:0> , <NUM_LIT:1> ] ) , <NUM_LIT:0> ) , <EOL> ( array ( [ <NUM_LIT:0> , <NUM_LIT:1> , <NUM_LIT:1> ] ) , <NUM_LIT:1> ) , <EOL> ( array ( [ <NUM_LIT:1> , <NUM_LIT:0> , <NUM_LIT:1> ] ) , <NUM_LIT:1> ) , <EOL> ( array ( [ <NUM_LIT:1> , <NUM_LIT:1> , <NUM_LIT:1> ] ) , <NUM_LIT:1> ) , <EOL> ] <EOL> training_data_and = [ <EOL> ( array ( [ <NUM_LIT:0> , <NUM_LIT:0> , <NUM_LIT:1> ] ) , <NUM_LIT:0> ) , <EOL> ( array ( [ <NUM_LIT:0> , <NUM_LIT:1> , <NUM_LIT:1> ] ) , <NUM_LIT:0> ) , <EOL> ( array ( [ <NUM_LIT:1> , <NUM_LIT:0> , <NUM_LIT:1> ] ) , <NUM_LIT:0> ) , <EOL> ( array ( [ <NUM_LIT:1> , <NUM_LIT:1> , <NUM_LIT:1> ] ) , <NUM_LIT:1> ) , <EOL> ] <EOL> training_data_not = [ <EOL> ( array ( [ <NUM_LIT:0> ] ) , <NUM_LIT:1> ) , <EOL> ( array ( [ <NUM_LIT:1> ] ) , <NUM_LIT:0> ) , <EOL> ] <EOL> def run_perceptron ( training_data ) : <EOL> errors = [ ] <EOL> bias = <NUM_LIT> <EOL> steps = <NUM_LIT:100> <EOL> vector_length = len ( training_data [ <NUM_LIT:0> ] [ <NUM_LIT:0> ] ) <EOL> rand_vec3 = random . rand ( vector_length ) <EOL> print ( '<STR_LIT>' . format ( rand_vec3 ) ) <EOL> for _ in xrange ( steps ) : <EOL> vec3 , expected = choice ( training_data ) <EOL> result = dot ( rand_vec3 , vec3 ) <EOL> offset = expected - unit_step ( result ) <EOL> errors . append ( offset ) <EOL> rand_vec3 += bias * offset * vec3 <EOL> for vec3 , expected in training_data : <EOL> result = dot ( vec3 , rand_vec3 ) <EOL> print ( "<STR_LIT>" . format ( <EOL> vec3 [ : <NUM_LIT:2> ] , result , unit_step ( result ) , expected ) ) <EOL> if DEBUG : <EOL> with Section ( '<STR_LIT>' ) : <EOL> run_perceptron ( training_data_or ) <EOL> run_perceptron ( training_data_and ) <EOL> run_perceptron ( training_data_not ) </s>
