PyTorch Optimizer Collection

0.3.0 · active · verified Thu Apr 16

pytorch-optimizer is a production-focused optimization toolkit for PyTorch, offering a comprehensive collection of over 100 optimizers, 10+ learning rate schedulers, and 10+ loss functions. It provides a consistent API for fast experimentation with modern training methods without extensive boilerplate. The library is currently at version 0.3.0 and has seen periodic updates, with the latest release in October 2021.

Common errors

Warnings

Install

Imports

Quickstart

This quickstart demonstrates how to initialize a model and apply an optimizer from the `torch_optimizer` library, using AdamP as an example. It includes a basic forward and backward pass to illustrate its use in a typical PyTorch training loop. You can directly import specific optimizers or use `load_optimizer` and `create_optimizer` for dynamic loading.

import torch
import torch.nn as nn
from torch_optimizer import AdamP

# Define a simple model
class SimpleModel(nn.Module):
    def __init__(self):
        super().__init__()
        self.linear = nn.Linear(10, 1)

    def forward(self, x):
        return self.linear(x)

model = SimpleModel()

# Initialize AdamP optimizer with model parameters
# Replace with other optimizers like A2GradExp, AdaBelief, etc.
optimizer = AdamP(model.parameters(), lr=1e-3, betas=(0.9, 0.999), weight_decay=1e-2)

# Example of a training step
inputs = torch.randn(32, 10) # Batch of 32, 10 features
targets = torch.randn(32, 1) # Corresponding targets

optimizer.zero_grad()
outputs = model(inputs)
loss = torch.nn.functional.mse_loss(outputs, targets)
loss.backward()
optimizer.step()

print(f"Initial loss: {loss.item():.4f}")

view raw JSON →