from math import exp class RNA: def __init__(self, nInput, nHidden, nOutput, inputVector, pesos, b): self.inputVector = inputVector self.nInput = len(inputVector) self.nHidden = nHidden self.nOutput = nOutput self.pesos = pesos self.b = b #Inicializa un vector que contendra el valor para cada unidad de cada capa self.outputVector = [0 for _ in range(3)] self.outputVector[0] = inputVector self.outputVector[1] = [-1 for _ in range(nHidden)] self.outputVector[2] = [-1 for _ in range(nOutput)] def calculateHidden(self, hiddenWeight, hiddenB): y = z = [0 for _ in range(self.nHidden)] for i in range(0, self.nHidden): for j in range(0, self.nInput): # Se utiliza el indice i,j porque a cada unidad le corresponde un vector con pesos z[i] = z[i] + (self.inputVector[j] * hiddenWeight[i][j] + hiddenB[i]) y[i] = self.calculateSigmoidal(z[i]) self.outputVector[1] = y return y def calculateOutput(self, outputWeight, outputB): y = z = [0 for _ in range(self.nOutput)] #[[1, 1], [1,1] ] for i in range(0,self.nOutput): for j in range(0, self.nHidden): z[i] = z[i] + (self.outputVector[1][j] * outputWeight[i][j] + outputB[i]) y[i] = self.calculateSigmoidal(z[i]) self.outputVector[2] = y return y def calculateSigmoidal(self, suma): return (1.0/(1+(exp(-1*suma)))) def linearActivation(): pass if __name__ == "__main__": #primer caso weights = [[[1,1]],[[1]]] b = [[-1, -1],[1],[1]] inputValues = [1,1] r = RNA(2, 1, 1, inputValues, weights, b) print "Output de la red neuronal con unidades 2, 1, 1 para su respectiva capa" print r.calculateHidden(weights[0], b[1]) print r.calculateOutput(weights[1], b[2]) #segundo caso weights = [ [[1.5,1.5], [1.5,1.5]], [[1,1]]] b = [[-1, -1],[1, 1],[1]] r = RNA(2, 2, 1, inputValues, weights, b) print "Output de la red neuronal con unidades 2, 2, 1 para su respectiva capa" r.calculateHidden(weights[0], b[1]) r.calculateOutput(weights[1], b[2]) print r.outputVector[1] print r.outputVector[2] #tercer caso print "Output de la red neuronal con unidades 2, 2, 2 para su respectiva capa" weights = [ [[1.5,1.5], [1.5,1.5]], [[1, 1], [1,1] ]] b = [[-1, -1],[1, 1],[1, 1]] r = RNA(2, 2, 2, inputValues, weights, b) r.calculateHidden(weights[0], b[1]) r.calculateOutput(weights[1], b[2]) print r.outputVector[1] print r.outputVector[2]
Run
Reset
Share
Import
Link
Embed
Language▼
English
中文
Python Fiddle
Python Cloud IDE
Follow @python_fiddle
Browser Version Not Supported
Due to Python Fiddle's reliance on advanced JavaScript techniques, older browsers might have problems running it correctly. Please download the latest version of your favourite browser.
Chrome 10+
Firefox 4+
Safari 5+
IE 10+
Let me try anyway!
url:
Go
Python Snippet
Stackoverflow Question