-
Notifications
You must be signed in to change notification settings - Fork 0
/
camada_saida.py
56 lines (43 loc) · 2.04 KB
/
camada_saida.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
from neuronio import Neuronio
from settings import ultimo_id_neuronio
from camada import Camada
import random
class CamadaSaida(Camada):
'''Camada que herda as funcionalidades de uma camada comum,
mas possui especificidades da camada de saída, como:
Leitura de saída esperada
'''
def __init__(self, quantos_neuronios):
super(CamadaSaida, self).__init__(quantos_neuronios)
self.saida_esperada = []
def le_saida_esperada(self, nome_arquivo, quantas_saidas, linha_leitura):
with open(nome_arquivo, 'r') as arquivo_entrada:
linha_atual = 0
quantos_leu = 0
for linha in arquivo_entrada:
if(linha_atual == linha_leitura):
linha_quebrada = linha.split(' ')[1].split('\n')
# Le a saida esperada
self.popula_saida_esperada([saida for saida in linha_quebrada[0]])
quantos_leu += 1
if(quantos_leu == quantas_saidas):
# self.exibe_neuronios()
break
else:
linha_atual += 1
def retorna_saida_esperada_formatada(self):
return ''.join(self.saida_esperada)
def print_saida_esperada_neuronios(self):
print(''.join(self.saida_esperada))
def popula_saida_esperada(self, lista_saida_esperada):
self.saida_esperada = lista_saida_esperada
def fator_erro_camada_saida(self):
for i in range(len(self.neuronios)):
self.neuronios[i].fator_erro = float(self.saida_esperada[i]) - float(self.neuronios[i].saida)
return self.neuronios
def calculo_fator_erro_erro_saida(self):
self.neuronios = self.fator_erro_camada_saida()
for i in range(len(self.neuronios)):
self.neuronios[i].calculo_erro()
def reconheceu_saida(self):
return True if ''.join(self.__formata_saida_neuronios__()) == ''.join(self.saida_esperada) else False