Untitled

mail@pastecode.io avatar
unknown
python
8 months ago
1.5 kB
4
Indexable
Never
import numpy as np
class Perceptron:
    def __init__(self, input_size, learning_rate=0.1):
        self.weights = np.zeros(input_size + 1) # Add one for the bias
        self.learning_rate = learning_rate
    def predict(self, inputs):
        summation = np.dot(inputs, self.weights[1:]) + self.weights[0]
        return 1 if summation > 0 else 0
    def train(self, training_inputs, labels):
        weight_changed = True
        while weight_changed:
            weight_changed = False
            for inputs, label in zip(training_inputs, labels):
                prediction = self.predict(inputs)
                error = label - prediction
                if error != 0:
                    weight_changed = True
                    self.weights[1:] += self.learning_rate * error * inputs
                    self.weights[0] += self.learning_rate * error
# Training data for logical AND function
training_inputs = np.array([[0, 0], [0, 1], [1, 0], [1, 1]])
labels = np.array([0, 0, 0, 1])
# Create and train perceptron
perceptron = Perceptron(input_size=2)
perceptron.train(training_inputs, labels)
print("Testing the trained perceptron")
for inputs in training_inputs:
    prediction = perceptron.predict(inputs)
    print(f"inputs: {inputs}, Predicted output: {prediction}")
    
    
    
#Testing the trained perceptron
#inputs: [0 0], Predicted output: 0
#inputs: [0 1], Predicted output: 0
#inputs: [1 0], Predicted output: 0
#inputs: [1 1], Predicted output: 1
Leave a Comment