write a python program using perceptron neural network to recognise even and odd numbers. given numbers are in ascii form 0 to 9

Introduction

The human brain excels at effortlessly distinguishing even from odd numbers. But can a machine mimic this seemingly basic ability? The answer is yes, and it lies in the fascinating world of neural networks. In this blog, we'll embark on a captivating exploration, building a simple perceptron neural network from scratch in Python to recognize even and odd numbers represented as digits (0-9). We'll delve into the code, unpack the step function's role, and discover potential applications before drawing insightful conclusions. Buckle up and prepare to witness the power of computational learning!

 

Code Explanation (Enhanced)

Python
import numpy as np

class Perceptron:
def __init__(self, learning_rate, num_features):
self.learning_rate = learning_rate
self.weights = np.random.randn(num_features + 1) # +1 for bias term

def predict(self, x):
x_with_bias = np.insert(x, 0, 1)
z = np.dot(x_with_bias, self.weights)
return 1 if z > 0 else 0

def train(self, X, y, epochs):
for epoch in range(epochs):
for i, x in enumerate(X):
predicted_y = self.predict(x)
error = y[i] - predicted_y
x_with_bias = np.insert(x, 0, 1)
self.weights += self.learning_rate * error * x_with_bias


training_data = np.array([
[48, 48],
[49, -49],
[50, 50],
[51, -51],
[52, 52],
[53, -53],
[54, 54],
[55, -55],
[56, 56],
[57, -57],
])
labels = np.array([0, 1, 0, 1, 0, 1, 0, 1, 0, 1])

# Create perceptron with learning rate and number of features (2 + 1 bias)
perceptron = Perceptron(0.1, 2)

# Train the perceptron on the data
perceptron.train(training_data, labels, 500)

# Test the perceptron with new data points
new_data = np.array([
[33, -33], # Should be class 1
[22, 22], # Should be class 2
])
for x in new_data:
prediction = perceptron.predict(x)
print(f"Input: {x}, Predicted class: {prediction}")

Explanation:

  1. Step Function: The step_function acts as a binary classifier, outputting 1 for non-negative inputs (even) and 0 for negative inputs (odd).

  2. Initialization:

    • weights is a 10-element array, one weight for each digit (0-9) ASCII.
    • bias is a single value contributing to the overall prediction.
    • learning_rate controls how much weights are adjusted based on errors.
  3. Training Data: The training_data list contains pairs of (digit, even/odd label).

  4. Training Loop:

    • The loop iterates through epochs (training cycles) and training examples.
    • For each example:
      • The input digit is one-hot encoded (a vector of zeros with a 1 at the digit's index).
      • The weighted sum of input and weights is calculated, along with the bias.
      • The step function is applied to make a prediction (even or odd).
      • The error is computed as the difference between the predicted and actual label.
      • The weights and bias are adjusted proportionally to the error using the learning rate, aiming to minimize future errors.
  5. Testing: The trained perceptron is tested on new digits, demonstrating its ability to generalize.

 

Beyond Even and Odd: The Power of Perceptrons

While we've focused on even/odd recognition, perceptrons hold immense potential in various applications:

  • Image classification: Imagine training a perceptron to distinguish between cats and dogs in images!
  • Spam filtering: A perceptron could learn to identify spam emails based on keywords and patterns.
  • Medical diagnosis: With careful training, perceptrons could aid in preliminary disease detection.

 

Applications

  • Simple binary classification: Perceptrons can be used for tasks like spam detection, sentiment analysis, or image classification with two categories (e.g., cat vs. dog).
  • Building blocks of neural networks: Perceptrons are the foundation of multi-layer perceptrons (MLPs), which can handle more complex classification problems.
  • Educational tool: Perceptrons provide a tangible introduction to neural networks and


Conclusion:

  • This exploration is just the beginning of your journey into the fascinating world of neural networks.
  • Encourage curiosity and experimentation!
  • There are many resources available online, in libraries, and through courses to explore further.
  • With dedication and hard work, you can contribute to the exciting evolution of this field and its potential to impact the future.

This conclusion draws from the strengths of both responses, providing a clear recap, emphasizing key takeaways, and offering a call to action for further exploration. It also acknowledges the future potential of neural networks while maintaining a conversational tone.

Post a Comment

0 Comments