Spaces:
Sleeping
Sleeping
| import torch | |
| import torch.nn as nn | |
| from azure_optimizer import Azure # Assuming the above class is in a module named azure_optimizer | |
| # Define a simple model for demonstration | |
| class SimpleModel(nn.Module): | |
| def __init__(self): | |
| super().__init__() | |
| self.base = nn.Linear(10, 5) | |
| self.classifier = nn.Linear(5, 2) | |
| def forward(self, x): | |
| x = torch.relu(self.base(x)) | |
| return self.classifier(x) | |
| # Initialize model and sample variables | |
| model = SimpleModel() | |
| var1 = torch.nn.Parameter(torch.randn(2, 2)) | |
| var2 = torch.nn.Parameter(torch.randn(2, 2)) | |
| inputs = torch.randn(32, 10) | |
| targets = torch.randint(0, 2, (32,)) | |
| criterion = nn.CrossEntropyLoss() | |
| # Example 1: Basic usage with model.parameters() | |
| optimizer = Azure(model.parameters()) | |
| optimizer.zero_grad() | |
| outputs = model(inputs) | |
| loss = criterion(outputs, targets) | |
| loss.backward() | |
| optimizer.step() | |
| # Example 2: List of parameters | |
| optimizer = Azure([var1, var2]) | |
| optimizer.zero_grad() | |
| loss = criterion(var1 @ var2, torch.zeros_like(var1 @ var2)) | |
| loss.backward() | |
| optimizer.step() | |
| # Example 3: Named parameters | |
| optimizer = Azure(model.named_parameters()) | |
| optimizer.zero_grad() | |
| outputs = model(inputs) | |
| loss = criterion(outputs, targets) | |
| loss.backward() | |
| optimizer.step() | |
| # Example 4: Named parameters in a list (invalid, will be handled by the class) | |
| optimizer = Azure([('layer0', var1), ('layer1', var2)]) # The class converts this to a parameter list | |
| optimizer.zero_grad() | |
| loss = criterion(var1 @ var2, torch.zeros_like(var1 @ var2)) | |
| loss.backward() | |
| optimizer.step() | |
| # Example 5: Parameter groups with different learning rates | |
| optimizer = Azure([ | |
| {'params': model.base.parameters(), 'lr': 1e-2}, | |
| {'params': model.classifier.parameters()} | |
| ]) | |
| optimizer.zero_grad() | |
| outputs = model(inputs) | |
| loss = criterion(outputs, targets) | |
| loss.backward() | |
| optimizer.step() | |
| # Example 6: Parameter groups with named parameters | |
| optimizer = Azure([ | |
| {'params': model.base.named_parameters(), 'lr': 1e-2}, | |
| {'params': model.classifier.named_parameters()} | |
| ]) | |
| optimizer.zero_grad() | |
| outputs = model(inputs) | |
| loss = criterion(outputs, targets) | |
| loss.backward() | |
| optimizer.step() | |