Last active
May 28, 2026 12:55
-
-
Save je4npw/fc43f7890c977f81df7c396ce17bf6fe to your computer and use it in GitHub Desktop.
Rede Neural de Camada Única para Classificação Binária (Python)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| import numpy as np | |
| # Passo 1: Definição da função sigmoide e sua derivada | |
| def sigmoid(x): | |
| return 1 / (1 + np.exp(-x)) | |
| def sigmoid_derivative(x): | |
| # x aqui já é a saída da sigmoide, então derivada = x * (1 - x) | |
| return x * (1 - x) | |
| # Passo 2: Definição das matrizes de entrada (X) e saída desejada (y) | |
| # Problema linearmente separável para garantir convergência em 1 camada | |
| X = np.array([[0, 0, 1], | |
| [0, 1, 1], | |
| [1, 0, 1], | |
| [1, 1, 1]]) | |
| y = np.array([[0], | |
| [1], | |
| [1], | |
| [0]]) | |
| # Passo 3: Inicialização aleatória dos pesos (sinapses) | |
| np.random.seed(1) # Para reprodutibilidade | |
| sinapses = 2 * np.random.random((3, 1)) - 1 # Valores entre -1 e 1 | |
| # Passo 4: Loop de treinamento (10.000 iterações) | |
| print("Iniciando treinamento da rede neural...") | |
| for iteracao in range(10000): | |
| # Propagação para frente (Forward Pass) | |
| entrada = X | |
| saida = sigmoid(np.dot(entrada, sinapses)) | |
| # Cálculo do erro | |
| erro = y - saida | |
| # Cálculo do delta (ajuste) usando a derivada da sigmoide | |
| ajuste = erro * sigmoid_derivative(saida) | |
| # Atualização dos pesos | |
| sinapses += np.dot(entrada.T, ajuste) | |
| # Passo 5: Exibição dos resultados | |
| print("\n=== RESULTADOS APÓS 10.000 ITERAÇÕES ===") | |
| print("Saída desejada (y):") | |
| print(y) | |
| print("\nSaída prevista pela rede:") | |
| print(np.round(saida, 4)) | |
| print("\nPesos finais (sinapses):") | |
| print(np.round(sinapses, 4)) | |
| print("\nErro médio final:", np.mean(np.abs(erro))) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment