# neural network v2, 3 years later
import numpy as np
import math as mt
def neuron(weights, inputs, bias):
return (sum(np.multiply(np.array(weights), np.array(inputs)), bias))
def relu(neuron):
return (1/(1+mt.exp(neuron)))
def reluderiv(neuron):
return neuron*(1 - neuron)
connections = []
structure = [2, 3, 1]
for i in structure:
toadd = []
for m in range(i):
toadd.append(m)
toadd.append(i)
for v in range(i):
connections.append(toadd)
print(connections)
traindata = [[[0, 0], [0]], [[1, 1], [0]], [[0, 1], [1]], [[1, 0], [1]]]
history = []
confidence = 0.5
for u in traindata:
layer = u[0]
for f in connections:
last = layer
layer = []
for k in f:
layer.append(relu(neuron(k[0], last, float(k[1]))))
history.append(layer)
print(history)
train = [1, 0] if u[1] == true else [0, 1]
layerarr = np.array(layer)
trainarr = np.array(train)
totalerror = abs(sum(layerarr-trainarr))
totalerrorsquared = sum(np.square(layerarr-trainarr))/2
mse = totalerrorsquared/(len(traindata))
backhist = history.reverse()
backconn = connections.reverse()
for k in backconn:
for i in k:
erroroutderiv = (i - train)
outnetderiv = reluderiv(i)
netweightderiv = backhist[backconn.index(k) + 1][backconn.index(i)]
errorweightderiv = erroroutderiv*outnetderiv*netweightderiv
backconn[backconn.index(k)][backconn.index(i)] += confidence*errorweightderiv
connections = backconn.reverse()
print(connections)
IyBuZXVyYWwgbmV0d29yayB2MiwgMyB5ZWFycyBsYXRlcgppbXBvcnQgbnVtcHkgYXMgbnAKaW1wb3J0IG1hdGggYXMgbXQKZGVmIG5ldXJvbih3ZWlnaHRzLCBpbnB1dHMsIGJpYXMpOgoJcmV0dXJuIChzdW0obnAubXVsdGlwbHkobnAuYXJyYXkod2VpZ2h0cyksIG5wLmFycmF5KGlucHV0cykpLCBiaWFzKSkKZGVmIHJlbHUobmV1cm9uKToKCXJldHVybiAoMS8oMSttdC5leHAobmV1cm9uKSkpCmRlZiByZWx1ZGVyaXYobmV1cm9uKToKCXJldHVybiBuZXVyb24qKDEgLSBuZXVyb24pCmNvbm5lY3Rpb25zID0gW10Kc3RydWN0dXJlID0gWzIsIDMsIDFdCmZvciBpIGluIHN0cnVjdHVyZToKCXRvYWRkID0gW10KCWZvciBtIGluIHJhbmdlKGkpOgoJCXRvYWRkLmFwcGVuZChtKQoJdG9hZGQuYXBwZW5kKGkpCglmb3IgdiBpbiByYW5nZShpKToKCQljb25uZWN0aW9ucy5hcHBlbmQodG9hZGQpCnByaW50KGNvbm5lY3Rpb25zKQp0cmFpbmRhdGEgPSBbW1swLCAwXSwgWzBdXSwgW1sxLCAxXSwgWzBdXSwgW1swLCAxXSwgWzFdXSwgW1sxLCAwXSwgWzFdXV0KaGlzdG9yeSA9IFtdCmNvbmZpZGVuY2UgPSAwLjUKZm9yIHUgaW4gdHJhaW5kYXRhOgoJbGF5ZXIgPSB1WzBdCglmb3IgZiBpbiBjb25uZWN0aW9uczoKCQlsYXN0ID0gbGF5ZXIKCQlsYXllciA9IFtdCgkJZm9yIGsgaW4gZjoKCQkJbGF5ZXIuYXBwZW5kKHJlbHUobmV1cm9uKGtbMF0sIGxhc3QsIGZsb2F0KGtbMV0pKSkpCgkJaGlzdG9yeS5hcHBlbmQobGF5ZXIpCglwcmludChoaXN0b3J5KQoJdHJhaW4gPSBbMSwgMF0gaWYgdVsxXSA9PSB0cnVlIGVsc2UgWzAsIDFdCglsYXllcmFyciA9IG5wLmFycmF5KGxheWVyKQoJdHJhaW5hcnIgPSBucC5hcnJheSh0cmFpbikKCXRvdGFsZXJyb3IgPSBhYnMoc3VtKGxheWVyYXJyLXRyYWluYXJyKSkKCXRvdGFsZXJyb3JzcXVhcmVkID0gc3VtKG5wLnNxdWFyZShsYXllcmFyci10cmFpbmFycikpLzIKCW1zZSA9IHRvdGFsZXJyb3JzcXVhcmVkLyhsZW4odHJhaW5kYXRhKSkKCWJhY2toaXN0ID0gaGlzdG9yeS5yZXZlcnNlKCkKCWJhY2tjb25uID0gY29ubmVjdGlvbnMucmV2ZXJzZSgpCglmb3IgayBpbiBiYWNrY29ubjoKCQlmb3IgaSBpbiBrOgoJCQllcnJvcm91dGRlcml2ID0gKGkgLSB0cmFpbikKCQkJb3V0bmV0ZGVyaXYgPSByZWx1ZGVyaXYoaSkKCQkJbmV0d2VpZ2h0ZGVyaXYgPSBiYWNraGlzdFtiYWNrY29ubi5pbmRleChrKSArIDFdW2JhY2tjb25uLmluZGV4KGkpXQoJCQllcnJvcndlaWdodGRlcml2ID0gZXJyb3JvdXRkZXJpdipvdXRuZXRkZXJpdipuZXR3ZWlnaHRkZXJpdgoJCQliYWNrY29ubltiYWNrY29ubi5pbmRleChrKV1bYmFja2Nvbm4uaW5kZXgoaSldICs9IGNvbmZpZGVuY2UqZXJyb3J3ZWlnaHRkZXJpdgoJY29ubmVjdGlvbnMgPSBiYWNrY29ubi5yZXZlcnNlKCkKCXByaW50KGNvbm5lY3Rpb25zKQ==
[[0, 1, 2], [0, 1, 2], [0, 1, 2, 3], [0, 1, 2, 3], [0, 1, 2, 3], [0, 1]]
Traceback (most recent call last):
File "./prog.py", line 29, in <module>
TypeError: 'int' object is not subscriptable