Neural Networks Deep Dive
Neural networks come in many architectures, each suited for different types of data.
Feedforward Neural Network
The simplest type where data flows in one direction from input to output.
import torch.nn as nn
class FeedForwardNet(nn.Module):
def __init__(self, input_size, hidden_sizes, num_classes):
super().__init__()
layers = []
prev_size = input_size
for hidden_size in hidden_sizes:
layers.extend([
nn.Linear(prev_size, hidden_size),
nn.ReLU(),
nn.Dropout(0.2)
])
prev_size = hidden_size
layers.append(nn.Linear(prev_size, num_classes))
self.network = nn.Sequential(*layers)
def forward(self, x):
return self.network(x)
Convolutional Neural Networks (CNN)
CNNs are designed for image data. They use convolutional filters to detect spatial patterns.
class CNN(nn.Module):
def __init__(self):
super().__init__()
self.conv_layers = nn.Sequential(
nn.Conv2d(3, 32, 3, padding=1),
nn.ReLU(),
nn.MaxPool2d(2, 2),
nn.Conv2d(32, 64, 3, padding=1),
nn.ReLU(),
nn.MaxPool2d(2, 2),
)
self.classifier = nn.Sequential(
nn.Flatten(),
nn.Linear(64 * 8 * 8, 128),
nn.ReLU(),
nn.Linear(128, 10)
)
def forward(self, x):
x = self.conv_layers(x)
x = self.classifier(x)
return x
Recurrent Neural Networks (RNN)
RNNs handle sequential data like text and time series by maintaining hidden state.
class RNN(nn.Module):
def __init__(self, input_size, hidden_size, num_layers, num_classes):
super().__init__()
self.hidden_size = hidden_size
self.num_layers = num_layers
self.lstm = nn.LSTM(input_size, hidden_size, num_layers, batch_first=True)
self.fc = nn.Linear(hidden_size, num_classes)
def forward(self, x):
h0 = torch.zeros(self.num_layers, x.size(0), self.hidden_size)
c0 = torch.zeros(self.num_layers, x.size(0), self.hidden_size)
out, _ = self.lstm(x, (h0, c0))
out = self.fc(out[:, -1, :])
return out
Transformers
Transformers use attention mechanisms and power modern LLMs like GPT and BERT.
from transformers import pipeline
# Text classification
classifier = pipeline("text-classification")
result = classifier("I love Python programming!")
print(result)
# Text generation
generator = pipeline("text-generation", model="gpt2")
result = generator("Once upon a time", max_length=50)
print(result)
Summary
You learned about FeedForward, CNN, RNN, and Transformer architectures. Next, we'll explore computer vision.