Skip to content

Instantly share code, notes, and snippets.

@je4npw
Last active May 28, 2026 12:55
Show Gist options
  • Select an option

  • Save je4npw/fc43f7890c977f81df7c396ce17bf6fe to your computer and use it in GitHub Desktop.

Select an option

Save je4npw/fc43f7890c977f81df7c396ce17bf6fe to your computer and use it in GitHub Desktop.
Rede Neural de Camada Única para Classificação Binária (Python)
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