In [66]:
import numpy as np
import matplotlib as plt

In [67]:
def create_training_data(n, f):
    input1 = np.random.rand(n) * 10 - 5
    input2 = np.random.rand(n) * 10 - 5
    training_data = np.array([input1, input2, func(input1)])
    return training_data

def func(x):
    return 2*x + 1

#data = create_training_data(20, func)
#weights = np.random.rand(2)*2 - 1

def activate(sum_):
    if sum_ > 0:
        return 1
    else:
        return -1

def feedforward(inputs, weights):
    sum_ = 0
    for n in range(len(weights)):
        sum_ += inputs[n - 1]*weights[n - 1]
    return activate(sum_)

def train(data, weights):
    guess = feedforward(inputs, weights)
    error = desired - guess
    for n in range(len(weights)):
        weights[n] += 0.05 * error * data[n]
    print(weights)

In [72]:
dataset = create_training_data(20, func)
weights = np.random.rand(3)*2 - 1

In [73]:
for n1 in range(len(dataset[0])):
    data = dataset[n]
    inputs = [data[0], data[1]]
    desired = data[2]
    train(data, weights)


[ 0.56435577 -0.1278065  -0.1699929 ]
[ 1.13202106 -0.69501995  0.2029776 ]
[ 1.69968635 -1.2622334   0.5759481 ]
[ 2.26735164 -1.82944685  0.9489186 ]
[ 2.83501693 -2.39666031  1.3218891 ]
[ 3.40268222 -2.96387376  1.6948596 ]
[ 3.97034752 -3.53108721  2.06783009]
[ 4.53801281 -4.09830067  2.44080059]
[ 5.1056781  -4.66551412  2.81377109]
[ 5.67334339 -5.23272757  3.18674159]
[ 6.24100868 -5.79994102  3.55971209]
[ 6.80867397 -6.36715448  3.93268259]
[ 7.37633926 -6.93436793  4.30565308]
[ 7.94400455 -7.50158138  4.67862358]
[ 8.51166984 -8.06879484  5.05159408]
[ 9.07933513 -8.63600829  5.42456458]
[ 9.64700042 -9.20322174  5.79753508]
[ 10.21466571  -9.7704352    6.17050557]
[ 10.782331   -10.33764865   6.54347607]
[ 11.34999629 -10.9048621    6.91644657]

In [ ]:


In [ ]: