code for uni layer perceptron neural network code example

Example: code for uni layer perceptron neural network

#%matplotlib inline
from matplotlib import pyplot as plt
import numpy as np

data = [[3,   1.5, 1],
        [2,   1,   0],
        [4,   1.5, 1],
        [3,   1,   0],
        [3.5, .5,  1],
        [2,   .5,  0],
        [5.5,  1,  1],
        [1,    1,  0]]
mysteryFlower = [4.5,1]
for i in data:
    col = 'r'
    if i[2] == 0:
        col = 'b'
    plt.scatter(i[0],i[1],c=col)
    
w1 = np.random.randn()
w2 = np.random.randn()
b = np.random.randn()
def sigmoid(x):
    return 1/(1+np.exp(-x))
#training loop
costs = []
for i in range(500000):
    rand_ind = np.random.randint(len(data))
    dataPoint = data[rand_ind]
    lrate = 1
    global w1
    global w2
    global b
    pred_prim = w1*dataPoint[0]+w2*dataPoint[1]+b
    pred = sigmoid(pred_prim)
    cost = (pred-dataPoint[2])**2
    costs.append(cost)
    #derivatives
    dcost_dpred = 2*(pred-dataPoint[2])
    dpred_dpred_prim = sigmoid(pred_prim)-sigmoid(pred_prim)**2
    dpred_prim_dw1 = dataPoint[0]
    dpred_prim_dw2 = dataPoint[1]
    dpred_prim_db = 1
    w1-=lrate*dcost_dpred*dpred_dpred_prim*dpred_prim_dw1
    w2-=lrate*dcost_dpred*dpred_dpred_prim*dpred_prim_dw2
    b -= lrate*dcost_dpred*dpred_dpred_prim*dpred_prim_db
print(w1,w2,b)
print(sigmoid(w1*mysteryFlower[0]+w2*mysteryFlower[1]+b))
plt.plot(costs)