IOAI ML Notes Programming Fundamentals
PyTorch Basics
Core PyTorch concepts: tensors, autograd, modules, loss functions, and optimisers.
Syllabus Map
PyTorch Basics
import torch
import torch.nn as nn
import torch.nn.functional as F
import torch.optim as optim
Tensors
# Create tensors
x = torch.tensor([1.0, 2.0, 3.0])
X = torch.randn(3, 4)
Z = torch.zeros(2, 2)
# Attributes
X.shape
X.ndim
X.dtype
X.device
Autograd
x = torch.tensor([2.0, 3.0], requires_grad=True)
y = (x ** 2).sum()
y.backward()
x.grad
Modules
class MLP(nn.Module):
def __init__(self, in_dim, hidden_dim, out_dim):
super().__init__()
self.net = nn.Sequential(
nn.Linear(in_dim, hidden_dim),
nn.ReLU(),
nn.Linear(hidden_dim, out_dim)
)
def forward(self, x):
return self.net(x)
Loss and Optimiser
model = MLP(10, 32, 2)
criterion = nn.CrossEntropyLoss()
optimizer = optim.Adam(model.parameters(), lr=1e-3)