Untitled
unknown
plain_text
a month ago
2.0 kB
8
Indexable
import numpy as np class Perceptron: def __init__(self, input_size, learning_rate=0.1): self.weights = np.random.rand(input_size) * 2 - 1 self.bias = np.random.rand() * 2 - 1 self.learning_rate = learning_rate def activate(self, x): return 1 if x >= 0 else 0 def predict(self, inputs): summation = np.dot(inputs, self.weights) + self.bias return self.activate(summation) def train(self, training_data, labels, epochs): for _ in range(epochs): for inputs, label in zip(training_data, labels): prediction = self.predict(inputs) error = label - prediction self.weights += self.learning_rate * error * inputs self.bias += self.learning_rate * error def create_character_patterns(): patterns = { 'X': [ 1,0,0,0,1, 0,1,0,1,0, 0,0,1,0,0, 0,1,0,1,0, 1,0,0,0,1 ], 'O': [ 0,1,1,1,0, 1,0,0,0,1, 1,0,0,0,1, 1,0,0,0,1, 0,1,1,1,0 ], 'T': [ 1,1,1,1,1, 0,0,1,0,0, 0,0,1,0,0, 0,0,1,0,0, 0,0,1,0,0 ] } return patterns def main(): patterns = create_character_patterns() training_data = [] labels = [] for char, pattern in patterns.items(): training_data.append(pattern) labels.append(1 if char == 'X' else 0) training_data = np.array(training_data) labels = np.array(labels) perceptron = Perceptron(input_size=25) perceptron.train(training_data, labels, epochs=100) print("Testing the perceptron:") for char, pattern in patterns.items(): prediction = perceptron.predict(pattern) print(f"Character {char}: {'X' if prediction == 1 else 'Not X'}") if __name__ == "__main__": main()
Editor is loading...
Leave a Comment