What is torch.nn?
Key Components of nn module
Comparsion of manual task and nn module with coding
Create neural network with hidden layer using nn module
Advantage of nn.sequential netwok to create layers
What is torch.nn?
It is the core building block for creating and training neural networks easily without manually defining weights, biases, and formulas.
Letβs break it down with simple explanations, math, and how it replaces manual calculations.
What is torch.nn?
torch.nn is the Neural Network module of PyTorch.
It provides:
Pre-built layers (like nn.Linear, nn.Conv2d)
Activation functions (like nn.ReLU, nn.Sigmoid)
Loss functions (like nn.CrossEntropyLoss, nn.MSELoss)
Containers (nn.Sequential)
Regularization tools (nn.Dropout, nn.BatchNorm2d)
It abstracts away manual coding of weights, bias, and math like
Key Components of nn module
The torch.nn module in PyTorch is a core library that provides a wide array of classes and functions designed to help developers build neural networks efficiently and effectively.
It abstracts the complexity of creating and training neural networks by offering pre-built layers, loss functions, activation functions, and other utilities, enabling developers to focus on model design and experimentation rather than manual mathematical computations.
πΉ
Key Components of torch.nn
- Modules (Layers):
nn.Module:
The base class for all neural network modules.
Every custom model or layer should subclass this class.
Common Layers include:
nn.Linear β Fully connected (dense) layer
nn.Conv2d β Convolutional layer (used for images)
nn.LSTM β Recurrent layer (used for sequential data like text or time series)
Each layer automatically manages its weights and biases, and PyTorch handles gradient calculations during training.
- Activation Functions:
Functions that introduce non-linearity into the model, helping it learn complex relationships between input and output data.
Common examples:
nn.ReLU() β Rectified Linear Unit, outputs max(0, x)
nn.Sigmoid() β Converts values to range (0, 1)
nn.Tanh() β Converts values to range (-1, 1)
- Loss Functions:
Loss functions measure how far the modelβs predictions are from the actual values.
Common examples:
nn.CrossEntropyLoss() β Used for classification problems
nn.MSELoss() β Mean Squared Error, used for regression
nn.NLLLoss() β Negative Log Likelihood Loss, used with log-probabilities
These functions help quantify model errors so that optimization algorithms can minimize them.
- Container Modules:
nn.Sequential:
A simple container that allows you to stack layers sequentially in order.
Example:
model = nn.Sequential(
nn.Linear(3, 4),
nn.ReLU(),
nn.Linear(4, 1)
)
This simplifies building feedforward neural networks.
- Regularization and Dropout:
These techniques help prevent overfitting and improve a modelβs ability to generalize to new data.
Common examples:
nn.Dropout(p) β Randomly disables neurons during training with probability p
nn.BatchNorm2d() β Normalizes intermediate outputs, speeding up training and improving stability
Using your manual math (hand-written version)
import torch
X = torch.randn(4, 3)
W = torch.randn(3, 2, requires_grad=True)
b = torch.randn(2, requires_grad=True)
z = X @ W + b # Linear transformation
y_pred = torch.sigmoid(z) # Activation
loss = -(torch.log(y_pred)).mean()
loss.backward() # Computes gradients manually
β
Using torch.nn
import torch
import torch.nn as nn
# 1) Define model using nn.Module
model = nn.Sequential(
nn.Linear(3, 2), # Automatically creates W (3x2) and b (2,)
nn.Sigmoid() # Adds activation
)
# 2) Define loss
criterion = nn.BCELoss()
# 3) Example inputs and labels
X = torch.randn(4, 3)
y = torch.rand(4, 2)
# 4) Forward pass
y_pred = model(X)
# 5) Compute loss
loss = criterion(y_pred, y)
# 6) Backpropagation
loss.backward()
Comparsion of manual task and nn module with coding
Manual Implementation (Before nn.Module)
import torch
# Manual weight and bias
W = torch.randn(num_features, 1, requires_grad=True)
b = torch.zeros(1, requires_grad=True)
def forward(X):
z = torch.matmul(X, W) + b # π manual matmul
y = torch.sigmoid(z)
return y
Using nn module
Dataset Creation
Model Initialization
Comparsion of manual task and nn module with coding
Neural Network Structure (5β3β1)
===============Or using sequential network==========
Explanation
Advantage of nn.sequential netwok to create layers
Traditional Explicit Definition
import torch
import torch.nn as nn
class Model(nn.Module):
def __init__(self, num_features):
super().__init__()
self.linear1 = nn.Linear(num_features, 3)
self.relu = nn.ReLU()
self.linear2 = nn.Linear(3, 1)
self.sigmoid = nn.Sigmoid()
def forward(self, features):
out = self.linear1(features)
out = self.relu(out)
out = self.linear2(out)
out = self.sigmoid(out)
return out
πΉ How it works
Each layer (linear1, relu, linear2, sigmoid) is created separately.
You explicitly define the forward path step-by-step.
Gives you fine control over every operation.
Using nn.Sequential
import torch
import torch.nn as nn
class Model(nn.Module):
def __init__(self, num_features):
super().__init__()
self.network = nn.Sequential(
nn.Linear(num_features, 3),
nn.ReLU(),
nn.Linear(3, 1),
nn.Sigmoid()
)
def forward(self, features):
return self.network(features)
πΉ How it works
nn.Sequential automatically chains all layers together.
The forward() pass executes all layers in the same order.
You only write the architecture once, not step-by-step.
Top comments (0)