def propaga_uma_camada(Ativado_anterior, Pesos_atual, b_atual, ativacao='relu'): # Escreve a função de propagação das camadas ocultas
Saida_atual = np.dot(Pesos_atual, Ativado_anterior) + b_atual # Multiplica as matrizes com o np.dot e soma com a matriz b
if ativacao is 'relu':
func_ativacao = relu
elif ativacao is 'sigmoid':
func_ativacao = sigmoide
else: Exception ('Nao implementada ainda')
return func_ativacao(Saida_atual), Saida_atual #Propaga essa rede apenas em uma camada
def propaga_total(x, valores_parametros, arquitetura):# Propaga para todas as camadas
memoria = {}
Ativado_atual = x
for indice, camada in enumerate(arquitetura): # Seta o tamanho dos indices + 1
indice_camada = indice + 1
Ativado_anterior = Ativado_atual
func_ativacao_atual = camada['ativacao']
Pesos_atual = valores_parametros['P' + str(indice_camada)]
b_atual = valores_parametros['b' + str(indice_camada)]
Ativado_atual, Saida_atual = propaga_uma_camada(Ativado_anterior, Pesos_atual, b_atual, func_ativacao_atual)
memoria['A' + str(indice)] = Ativado_anterior
memoria['Z' + str(indice_camada)] = Saida_atual
return Ativado_atual, memoria # Guarda as informações de ativação na variavel
# Gerando os pesos
valores_parametros = inicia_camadas(arquitetura, seed=99)
y_estimado, memoria = propaga_total(np.transpose(x), valores_parametros, arquitetura)
Quando eu vou gerar a ultima linha do código, ele gera um Keyerror: P1. Como se ele não conseguisse achar o P1, eu imagino.
Como consertar? ou o que to fazendo errado?