1. Neural Nets in Euphoria
- Posted by SteveElde at AOL.COM Feb 19, 1999
- 401 views
I have written some neural net functions in Euphoria, here's what I have so far. -- net.e by Steve Elder global sequence net -- set up a sequence to store neural values and links global procedure define_net(atom size) net = repeat(0,size) end procedure -- neuron has link from, threshold, output level, link to global procedure neuron(atom link_from, atom threshold, atom output, atom link_to) if net[link_from] >= threshold then net[link_to] = net[link_to] + output end if end procedure -- end net.e -- net.ex by Steve Elder include net.e function net_not(atom a) define_net(2) net[1] = a neuron(1,0,1,2) neuron(1,1,-1,2) return net[2] end function puts(1, "net_not\n") print(1,net_not(1)) print(1,net_not(0)) puts(1,"\n\ncircular_reference\n") procedure circular_reference() -- makes a counter define_net(1) for i = 1 to 10 do neuron(1,0,1,1) print(1,net) end for end procedure circular_reference() procedure automatic_net_and() -- automatically generates inputs a and b define_net(5) for i = 1 to 4 do neuron(1,0,1,1) -- counter -- input a neuron(1,3,1,2) neuron(1,4,-1,2) -- input b neuron(1,2,1,3) neuron(1,3,-2,3) neuron(1,4,2,3) -- generate output neuron(2,1,1,4) neuron(3,1,1,4) -- change the second number on the -- next line to 1 to make an OR gate neuron(4,2,1,5) ? net -- display net -- reset outputs after each loop net[4] = 0 net[5] = 0 end for end procedure puts(1,"\n\nautomatic_net_and\n") automatic_net_and() function net_and(atom a, atom b) define_net(4) net[1] = a net[2] = b neuron(1,1,1,3) neuron(2,1,1,3) neuron(3,2,1,4) return net[4] end function puts(1,"\nnet_and\n") print(1,net_and(0,0)) print(1,net_and(0,1)) print(1,net_and(1,0)) print(1,net_and(1,1)) function net_or(atom a, atom b) define_net(4) net[1] = a net[2] = b neuron(1,1,1,3) neuron(2,1,1,3) neuron(3,1,1,4) return net[4] end function puts(1,"\n\nnet_or\n") print(1,net_or(0,0)) print(1,net_or(0,1)) print(1,net_or(1,0)) print(1,net_or(1,1)) function net_exor(atom a, atom b) -- exclusive OR define_net(4) net[1] = a net[2] = b neuron(1,1,1,3) neuron(2,1,1,3) neuron(3,1,1,4) neuron(3,2,-1,4) return net[4] end function puts(1,"\n\nnet_exor\n") print(1,net_exor(0,0)) print(1,net_exor(0,1)) print(1,net_exor(1,0)) print(1,net_exor(1,1)) -- end net.ex