def getMSE(self): for entrada in self.entradas: # percorrendo as entradas for val in entrada: neuronio = Neuronio(val, self.pesos_h[0]) self.h1 = neuronio.saida() neuronio = Neuronio(val, self.pesos_h[1]) self.h2 = neuronio.saida() u1 = self.pesos_o[0][0] + self.h1[idx] * self.pesos_o[0][1] + self.h2[idx] * self.pesos_o[0][2] u2 = self.pesos_o[0][0] + self.h1[idx] * self.pesos_o[1][1] + self.h2[idx] * self.pesos_o[1][2] self.resultadoN1.insert(1 / (1 + pow(self.e, -u1))) self.resultadoN2.insert(1 / (1 + pow(self.e, -u2))) self.erroN1 = self.res_esperadoN1 - self.resultadoN1 self.erro_quadratico += pow(self.erroN1, 2) self.erroN2 = self.res_esperadoN2 - self.resultadoN2 self.erro_quadratico += pow(self.erroN2, 2) return (self.erro_quadratico/(self.entradas.size) * 2) * 100
def le_camada_entrada(self, nome_arquivo, quantas_entradas, ultimo_id_neuronio, learning_rate, momentum): with open(nome_arquivo, 'r') as arquivo_leitura_entrada: quantos_leu = 0 for linha in arquivo_leitura_entrada: linha_quebrada = linha.split(' ') for i in linha_quebrada[ 0]: # pega as ENTRADAS somente (desconsidera saída esperada AINDA) n = Neuronio( ultimo_id_neuronio, i, learning_rate, momentum) # passando peso -1 como teste apenas n.entradas = [float(i)] n.saida = float( i) # coloca entrada na saída para primeira camada self.neuronios.append(n) ultimo_id_neuronio += 1 quantos_leu += 1 if (quantos_leu == quantas_entradas): self.exibe_neuronios() break return ultimo_id_neuronio