機器學習

# coding: utf-8

# In[30]:

import numpy as np
def sigmoid(x,deriv = False):
if (deriv == True):
return x*(1-x)
return 1/(1+np.exp(-x))

# In[31]:

x = np.array([[0,0,1],
[0,1,1],
[1,0,0],
[1,1,1],
[0,0,1]]
)
print (x.shape)

# In[32]:

y= np.array([[0],
[1],
[1],
[0],
[0]]
)
print (y.shape)

# In[33]:

np.random.seed(1)

# In[34]:

w0 = 2*np.random.random((3,4))
w1 = 2*np.random.random((4,1))
print(w0)

# In[37]:

for j in range(60000):
l0 = x
l1 = sigmoid(np.dot(l0,w0))
l2 = sigmoid(np.dot(l1,w1))
l2_error = y – l2
#print (l2_error.shape)
if (j%10000) == 0:
print (‘Error’ +str(np.mean(np.abs(l2_error))))
l2_delta = l2_error * sigmoid(l2,deriv=True)
#print (l2_delta.shape)
l1_error = l2_delta.dot(w1.T)
l1_delta = l1_error * sigmoid(l1,deriv=True)

w1 += l1.T.dot(l2_delta)
w0 += l0.T.dot(l1_delta)