In [3]:
import numpy as np
np.random.seed(1)
weights = 2 * np.random.random((3, 1)) -1
def sigmoid(z): return (1/(1 + np.e**(-z)))
def sigmoid_dz(z): return (z*(1 - z))
def predict(W, X): return sigmoid(np.dot(X, W))
def train(Tin, Tout, w, n):
for i in xrange(n):
output = sigmoid(np.dot(Tin, w))
w += np.dot(Tin.T, (Tout - output) * sigmoid_dz(output))
return w
In [4]:
training_set_X = np.array([[0,0,1], [1,1,1], [1,0,1], [0,1,1]])
training_set_y = np.array([[0, 1, 1, 0]]).T
weights = train(training_set_X, training_set_y, weights, 10000)
In [19]:
print "[1, 0, 0] = %s " % predict(weights, np.array([1, 0, 0]))[0]