Backpropagation
Backpropagation
Backpropagation
In [20]:
from math import exp
def initialize_network(n_inputs,n_hidden,n_outputs):
network=list()
return network
def activate(weights,inputs):
activation=weights[-1]
for i in range(len(weights)-1):
activation+=weights[i]*inputs[i]
return activation
def transfer(activation):
return 1.0/(1.0+exp(-activation))
def forward_propagate(network,row):
inputs=row
new_inputs=[]
activation=activate(neuron['weights'],inputs)
neuron['output']=transfer(activation)
new_inputs.append(neuron['output'])
inputs=new_inputs
return inputs
def transfer_derivative(output):
return output*(1.0-output)
def backward_propagate_error(network,expected):
for i in reversed(range(len(network))):
layer=network[i]
errors=list()
if i!=len(network)-1:
for j in range(len(layer)):
error=0.0
error+=(neuron['weights'][j]*neuron['delta'])
errors.append(error)
else:
for j in range(len(layer)):
neuron=layer[j]
errors.append(expected[j]-neuron['output'])
for j in range(len(layer)):
neuron=layer[j]
neuron['delta']=errors[j]*transfer_derivative(neuron['output'])
def update_weights(network,row,l_rate):
for i in range(len(network)):
inputs=row[:-1]
if i!=0:
for j in range(len(inputs)):
neuron['weights'][j]+=l_rate*neuron['delta']*inputs[j]
neuron['weights'][-1]+=l_rate*neuron['delta']
localhost:8889/nbconvert/html/Documents/4GW19IS020/Backpropagation.ipynb?download=false 1/2
11/8/22, 3:00 PM Backpropagation
def train_network(network,train,l_rate,n_epoch,n_outputs):
sum_error=0
output=forward_propagate(network,row)
expected[row[-1]]=1
update_weights(network,row,l_rate)
seed(1)
dataset=[[2.7810836,2.5505370030,0],
[1.465489372,2.362125076,0],
[3.396561688,4.400293529,0],
[1.38807019,1.850220317,0],
[3.06407232,3.005305973,0],
[7.627531214,2.759262235,1],
[5.332441248,2.088626775,1],
[6.922596716,1.77106367,1],
[8.675418651,-0.242068655,1],
[7.673756466,3.508563011,1]]
n_inputs=len(dataset[0])-1
network=initialize_network(n_inputs,2,n_outputs)
print(network)
train_network(network,dataset,0.5,5,n_outputs)
print(layer)
localhost:8889/nbconvert/html/Documents/4GW19IS020/Backpropagation.ipynb?download=false 2/2