📗XOR en python
import numpy as np
# Función de activación sigmoidal
def sigmoid(x):
return 1 / (1 + np.exp(-x))
# Función para entrenar el perceptrón
def train_perceptron(X, y, num_epochs, learning_rate):
# Inicializar los pesos y los sesgos aleatoriamente
np.random.seed(0)
synapse_0 = 2 * np.random.random((2, 2)) - 1
synapse_1 = 2 * np.random.random((2, 1)) - 1
for epoch in range(num_epochs):
# Propagación hacia adelante
layer_0 = X
layer_1 = sigmoid(np.dot(layer_0, synapse_0))
layer_2 = sigmoid(np.dot(layer_1, synapse_1))
# Cálculo del error
error = y - layer_2
# Retropropagación del error y ajuste de pesos
delta_layer_2 = error * (layer_2 * (1 - layer_2))
delta_layer_1 = delta_layer_2.dot(synapse_1.T) * (layer_1 * (1 - layer_1))
synapse_1 += learning_rate * layer_1.T.dot(delta_layer_2)
synapse_0 += learning_rate * layer_0.T.dot(delta_layer_1)
return synapse_0, synapse_1
# Datos de entrenamiento
X = np.array([[0, 0], [0, 1], [1, 0], [1, 1]])
y = np.array([[0, 1, 1, 0]]).T
# Entrenar el perceptrón
synapse_0, synapse_1 = train_perceptron(X, y, num_epochs=10000, learning_rate=0.1)
# Función para predecir la salida
def predict(X):
layer_0 = X
layer_1 = sigmoid(np.dot(layer_0, synapse_0))
layer_2 = sigmoid(np.dot(layer_1, synapse_1))
return layer_2
# Ejemplo de predicción
test_input = np.array([[0, 1]])
prediction = predict(test_input)
print("Predicción:", prediction)
Last updated