Você está na página 1de 3

import pandas as pd

import numpy as np
from sklearn.utils import shuffle
dados = pd.read_excel('C:/Users/bruzo/Documents/BRUNO/DOCUMENTOS/Dados RNAs/Dados
de treinamento/Bundesliga1.xlsx')
# dadosW1 = pd.read_excel('C:/Users/bruzo/Documents/BRUNO/DOCUMENTOS/Dados
RNAs/Pesos Geral/W1.xlsx')
# dadosB1 = pd.read_excel('C:/Users/bruzo/Documents/BRUNO/DOCUMENTOS/Dados
RNAs/Pesos Geral/B1.xlsx')
# dadosW2 = pd.read_excel('C:/Users/bruzo/Documents/BRUNO/DOCUMENTOS/Dados
RNAs/Pesos Geral/W2.xlsx')
# dadosB2 = pd.read_excel('C:/Users/bruzo/Documents/BRUNO/DOCUMENTOS/Dados
RNAs/Pesos Geral/B2.xlsx')
# Número de Padrões
q = len(dados)
# Vetor de dados de entrada + bias
X1 = np.array([(dados['Pt1']), (dados['Ap1']), (dados['Gj1']), (dados['Gs1']),
(dados['Pv1']),
(dados['Pt2']), (dados['Ap1']), (dados['Gj2']), (dados['Gs2']),
(dados['Pv2'])])
X = X1.T
bi = 1
b = 1
# Vetor de Respostas desejadas
d1 = np.array([dados['d']])
d = d1.T
# Estrutura da rede neural
m0 = 10 # Número de entradas
m1 = 5 # Número de neurônios da camada oculta
m2 = 1 # Número de neurônios da camada de saída
# Vetores de pesos + bias
W1 = np.random.rand(m1, m0)
B1 = np.random.rand(m1, 1)
W2 = np.random.rand(m2, m1)
B2 = np.random.rand(m2, m2)
# W1 = np.array(dadosW1)
# B1 = np.array(dadosB1)
# W2 = np.array(dadosW2)
# B2 = np.array(dadosB2)
# Fator de aprendizado
N = 0.0001
E = 0

# Função de ativação
def sigmoide(v):
sig = (1 / (1 + np.exp(-v)))
return sig

y = []
cont = 0
# Rede Neural
while True:
X, d = shuffle(X, d, random_state=0)
y.clear()
for i in range(q):
Wb1 = np.hstack((B1, W1))
Xb = np.hstack((b, X[i]))
# Camada oculta
v1 = np.dot(Wb1, Xb) # Campo local induzido da camada oculta
y1 = sigmoide(v1) # Aplicação da função de ativação siguimóide ao
campo local v1
# Camada de saída
Wb2 = np.hstack((B2, W2))
yb1 = np.hstack((bi, y1)) # Introdução do bias a entrada da camada de
saída
v2 = np.dot(Wb2, yb1) # Campo local induzido da camada de saída
y2 = v2 # Aplicação de uma função linear ao campo local v2
y.append(y2)
# Erro
e = d[i] - y2 # erro na camada de saída
E = E + ((pow(e, 2)) / 2)
# Gradientes
G2 = e
G1 = (y1 * (1 - y1)) * (G2 * (sum(sum(W2))))
# Atualização dos pesos
# Camada de saída
# Pesos
W2 = W2 + (N * G2 * y1)
# Bias
B2 = B2 + (N * G2)
# Camada oculta
# Pesos
W1[0] = W1[0] + (N * G1[0] * X[i])
W1[1] = W1[1] + (N * G1[1] * X[i])
W1[2] = W1[2] + (N * G1[2] * X[i])
W1[3] = W1[3] + (N * G1[3] * X[i])
W1[4] = W1[4] + (N * G1[4] * X[i])
# Bias
B1[0] = B1[0] + (N * G1[0])
B1[1] = B1[1] + (N * G1[1])
B1[2] = B1[2] + (N * G1[2])
B1[3] = B1[3] + (N * G1[3])
B1[4] = B1[4] + (N * G1[4])
# Critério de parada
cont += 1
Em = E / q
if cont % 1000 == 0:
print(f'\033[31m{Em}\033[m')
if Em <= 2.5:
break
E = 0
# Fim
print(f'\033[34m{y}\033[m')
print(cont)
print(f'\033[31m{W1}\033[m')
print(f'\033[32m{B1}\033[m')
print(f'\033[33m{W2}\033[m')
print(f'\033[34m{B2}\033[m')
w1 = pd.DataFrame(data=W1)
b1 = pd.DataFrame(data=B1)
w2 = pd.DataFrame(data=W2)
b2 = pd.DataFrame(data=B2)
w1.to_excel('C:/Users/bruzo/Documents/BRUNO/DOCUMENTOS/Dados RNAs/Pesos
Bundesliga/W11.xlsx', index=False)
b1.to_excel('C:/Users/bruzo/Documents/BRUNO/DOCUMENTOS/Dados RNAs/Pesos
Bundesliga/B11.xlsx', index=False)
w2.to_excel('C:/Users/bruzo/Documents/BRUNO/DOCUMENTOS/Dados RNAs/Pesos
Bundesliga/W22.xlsx', index=False)
b2.to_excel('C:/Users/bruzo/Documents/BRUNO/DOCUMENTOS/Dados RNAs/Pesos
Bundesliga/B22.xlsx', index=False)

Você também pode gostar