In [14]:
import numpy as np
In [69]:
def create_training_data(n, f):
input1 = np.random.rand(n) * 10
input2 = np.random.rand(n) * 10
training_data = np.array([input1, input2, f(input1, input2)])
return training_data
def func(x):
return 2*x + 1
#data = create_training_data(20, func)
#weights = np.random.rand(3)*2 - 1
def sum_(inputs, weights):
sum_ = 0
for n in range(len(weights)):
sum_ += inputs[n - 1]*weights[n - 1]
return sum_
def activate(sum_):
if sum_ > 0:
return 1
else:
return -1
def feedforward(data, weights):
outputs = []
for n in range(20):
inputs = [data[0, n], data[1, n]]
outputs.append(activate(sum_(inputs, weights)))
return outputs
def train(data, weights):
inputs = [data[0], data[1]]
desired = [data[2]]
guess = feedforward(data, weights)
error = []
for n1 in range(len(desired[0])):
error.append(desired[0][n1] - guess[n1])
for n2 in range(len(weights)):
weights[n2] += 0.05 * error[n1] * data[n2][n1]
print(weights)
train(data, weights)
In [70]:
data = create_training_data(20, func)
weights = np.random.rand(3)*2 - 1
In [71]:
for n in range(10):
train(data, weights)
In [ ]:
In [ ]: