Skip to content

Instantly share code, notes, and snippets.

@arvind-iyer
Created May 11, 2016 15:17
Show Gist options
  • Save arvind-iyer/988f2f1bc60bdc201a52dc2b07b5d0e1 to your computer and use it in GitHub Desktop.
Save arvind-iyer/988f2f1bc60bdc201a52dc2b07b5d0e1 to your computer and use it in GitHub Desktop.
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
y = np.array([[0],
[1],
[1],
[0]])
np.random.seed(1)
#synapses
syn0 = 2*np.random.random((3,4)) - 1
syn1 = 2*np.random.random((4,1)) - 1
#training
for j in xrange(60000):
l0 = X
l1 = nonlin(np.dot(l0,syn0))
l2 = nonlin(np.dot(l1,syn1))
l2_error = y - l2
if(j%10000) == 0:
print "Error rate: " + 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)
syn1 += l1.T.dot(l2_delta)
syn0 += l0.T.dot(l1_delta)
print "Output after training:"
print l2
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment