Neural Nets in Euphoria

new topic     » topic index » view thread      » older message » newer message

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

new topic     » topic index » view thread      » older message » newer message

Search



Quick Links

User menu

Not signed in.

Misc Menu