import numpy as np
x=[Link](([2,9],[1,5],[3,6]),dtype=float)
y=[Link](([92],[86],[89]),dtype=float)
x=x/[Link](x,axis=0)
y=y/100
def sigmoid(x):
return 1/(1+[Link](-x))
def derivatives_sigmoid(x):
return x*(1-x)
epoch=5000
lr=0.1
inputlayer_neurons=2
hiddenlayer_neurons=3
output_neurons=1
wh=[Link](size=(inputlayer_neurons,hiddenlayer_neurons))
bh=[Link](size=(1,hiddenlayer_neurons))
wout=[Link](size=(hiddenlayer_neurons,output_neurons))
bout=[Link](size=(1,output_neurons))
for i in range(epoch):
hinp1=[Link](x,wh)
hinp=hinp1+bh
hlayer_act=sigmoid(hinp)
outinp1=[Link](hlayer_act,wout)
outinp=outinp1+bout
output=sigmoid(outinp)
EO=y-output
outgrad=derivatives_sigmoid(output)
d_output=EO*outgrad
EH=d_output.dot(wout.T)
hiddengrad=derivatives_sigmoid(hlayer_act)
d_hiddenlayer=EH*hiddengrad
wout+=hlayer_act.[Link](d_output)*lr
wh+=[Link](d_hiddenlayer)*lr
print("Input:\n"+str(x))
print("Actual output:\n"+str(y))
print("Predicted output:\n",output)