def treino(self, entrada, saidaFinal): # Entrada -> Oculta entrada = Matriz.matriz(entrada) oculta = Matriz.mult(self.pesos_EO, entrada) oculta = Matriz.soma(oculta, self.bias_EO) oculta = Matriz.sigmoid(oculta) # Oculta -> Saida saida = Matriz.mult(self.pesos_OS, oculta) saida = Matriz.soma(saida, self.bias_OS) saida = Matriz.sigmoid(saida) #BACKPROPAGATION #Saida -> Oculta saidaFinal = Matriz.matriz(saidaFinal) saida_error = Matriz.sub(saidaFinal, saida) deriv_saida = Matriz.derivadaSigmoid(saida) oculta_t = Matriz.transposta(oculta) gradient_OS = Matriz.hadamard(deriv_saida, saida_error) gradient_OS = Matriz.mult_escalar(gradient_OS, self.taxa_aprendizado) delta_pesos_OS = Matriz.mult(gradient_OS, oculta_t) #Oculta -> Entrada pesos_OS_t = Matriz.transposta(self.pesos_OS) oculta_error = Matriz.mult(pesos_OS_t, saida_error) deriv_oculta = Matriz.derivadaSigmoid(oculta) entrada_t = Matriz.transposta(entrada) gradient_EO = Matriz.hadamard(deriv_oculta, oculta_error) gradient_EO = Matriz.mult_escalar(gradient_EO, self.taxa_aprendizado) delta_pesos_EO = Matriz.mult(gradient_EO, entrada_t) #Atualizando Pesos self.pesos_OS = Matriz.soma(self.pesos_OS, delta_pesos_OS) self.pesos_EO = Matriz.soma(self.pesos_EO, delta_pesos_EO)
def treino(self, entrada, saida): entrada = Matriz.matrizLinha(entrada) pesos_t = Matriz.transposta(self.pesos) soma = Matriz.mult(entrada, pesos_t) soma.data[0][0] -= self.bias erro = saida - soma.data[0][0] delta = erro * self.taxa self.bias = delta * -1 delta = Matriz.mult_escalar(entrada, delta) self.pesos = Matriz.soma(self.pesos, delta)
def treino(self, entrada, saidaFinal): # Verificando Resultado entrada = Matriz.matrizLinha(entrada) pesos_t = Matriz.transposta(self.pesos) soma = Matriz.mult(entrada, pesos_t) soma = Matriz.array(soma) soma[0] -= self.bias saida = Hebb(soma[0]) erro = False # Atualizando Pesos if (saida != saidaFinal): taxaErro = saidaFinal - saida delta = Matriz.mult_escalar(entrada, self.taxa * taxaErro) self.pesos = Matriz.soma(delta, self.pesos) self.bias += (taxaErro * self.taxa * -1) erro = True return erro