Neural Nets in Euphoria
- Posted by SteveElde at AOL.COM
Feb 19, 1999
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
|
Not Categorized, Please Help
|
|