Untitled
unknown
plain_text
9 months ago
2.0 kB
11
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