Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import random
- class Layer:
- def __init__(self, nodesIn, nodesOut):
- self.nodesIn = nodesIn
- self.nodesOut = nodesOut
- self.weights = [[0.0] * self.nodesOut] * self.nodesIn
- for x in range(self.nodesIn):
- for y in range(self.nodesOut):
- self.weights[x][y] = random.random() - 0.5
- def forward(self, inputs):
- self.inputs = inputs
- if(len(self.inputs)) != self.nodesIn:
- print("Incorrect number of inputs to the layer")
- else:
- self.output = [0.0] * self.nodesOut
- for x in range(self.nodesIn):
- for y in range(self.nodesOut):
- self.output[y] += self.inputs[x] * self.weights[x][y]
- def getCost(self, expectedOutput):
- self.expectedOutput = expectedOutput
- self.error = [0.0] * len(self.output)
- for x in range(len(self.nodesOut)):
- self.error[x] = self.output[x] - self.expectedOutput[x]
- return self.error
- def updateWeightsGradients(self, gradientsPerNeuron):
- self.dWeights = [[0.0] * self.nodesOut] * self.nodesIn
- for x in range(self.nodesIn):
- for y in range(self.nodesOut):
- self.dWeights[x][y] += gradientsPerNeuron[y] * self.inputs[x]
- for x in range(self.nodesIn):
- for y in range(self.nodesOut):
- self.weights[x][y] -= self.dWeights[x][y]
- class Network:
- def __init__(self, layers):
- self.layers = layers
- def forward(self, inputs):
- self.layers[0].forward(inputs)
- for x in range(1, len(self.layers)):
- self.layers[x].forward(self.layers[x - 1].output)
- self.output = self.layers[len(self.layers) - 1].output
- def updateWeights(self, error):
- #Get the cost of the final output
- self.error = error
- self.dError = 2 * self.error
- self.gradientsPerNeuron = [[] * 20] * len(self.layers)
- print(self.gradientsPerNeuron)
- #self.layers[2].updateWeightsGradients(self.gradientsPerNeuron)
- neuralNetwork = Network([
- Layer(1, 3),
- Layer(3, 2),
- Layer(2, 1)])
- neuralNetwork.forward([3])
- print(neuralNetwork.output)
- #neuralNetwork.layers[2].updateWeightsGradients([3])
- neuralNetwork.updateWeights([5])
- neuralNetwork.forward([3])
- print(neuralNetwork.output)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement