@benbenn/

AI -neural nettworks

Python

No description

fork
loading
Files
  • main.py
main.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
import numpy as np 

def nonlin ( x, deriv=False):
    if (deriv == True):
        return x * (1-x)
    

    return 1 / (1 + np.exp(-x))

#input data
x = np.array([
    [0,0,1],
    [0,1,1], 
    [1,0,1], 
    [1,1,1]])

#output data
y = np.array([
    [0],
    [1],
    [1],
    [0]])

np.random.seed(1)

#synopsis 
syn0 = 2 * np.random.random((3, 4)) - 1
syn1 = 2 * np.random.random((4, 1)) - 1


#training step  
for j in range(10000):

    l0 = x
    l1 = nonlin(np.dot(l0, syn0))
    l2 = nonlin(np.dot(l1, syn1))

    l2_error = y - l2

    if (j % 10000 == 0):
        print("error: " + str( np.mean( np.abs(l2_error))))


    l2_delta = l2_error * nonlin( l2, deriv = True)

    l1_error = l2_delta.dot( syn1.T)

    l1_delta = l1_error * nonlin (l1, deriv = True)


    #update weights 
    syn1 += l1.T.dot( l2_delta)
    syn0 += l0.T.dot( l1_delta)

print ( "OUTPUT AFTER TRAINING")
print (l2)