In [1]:
import numpy as np

In [2]:
w1 = 0
w2 = 0
b = 0

loss = 0
acc = 0
total_test = 100000
to_print = total_test / 10
eta = 0.001

for i in range(total_test):
    
    #Data
    x1 = np.random.rand()
    x2 = np.random.rand()
    z_ = float( x1 + x2 > 1 )
    
    #Feedforward
    y = w1 * x1 + w2 * x2 + b
    z = 1 / (1 + np.exp(-y))
    
    #Loss
    loss += -z_ * np.log(z) - (1 - z_) * np.log(1 - z) #Cross entropy
    acc += float(z_ == float(z > 0.5))
    if (i + 1) % to_print == 0:
        print loss, acc / float(to_print), (i + 1) / to_print
        loss = 0
        acc = 0
    
    #Backpropagation
    w1 -= eta * (z - z_) * x1
    w2 -= eta * (z - z_) * x2
    b -= eta * (z - z_)


6460.18822803 0.6147 1
5773.40847957 0.7866 2
5212.6128817 0.8627 3
4810.71004397 0.9065 4
4452.81751437 0.9201 5
4216.9398945 0.9457 6
3968.39199267 0.955 7
3811.29244459 0.9594 8
3621.99053576 0.9561 9
3490.56075058 0.9602 10