Get Even More Visitors To Your Blog, Upgrade To A Business Listing >>

Adjusted precision learning with Fuzzer Nn by Luminosity-e

import torch
import torch.nn as nn
import torch.optim as optim
from torch.utils.data import DataLoader
from torchvision import datasets, transforms

class ElegantNN(nn.Module):
"""An elegant neural network for MNIST classification."""
def __init__(self):
super(ElegantNN, self).__init__()
self.network = nn.Sequential(
nn.Linear(784, 128),
nn.ReLU(),
nn.Linear(128, 10),
)

def forward(self, x):
return self.network(torch.flatten(x, start_dim=1))

def evaluate_complexity(outputs):
"""Estimates task complexity based on output variance."""
variance = torch.var(outputs)
return 'high' if variance > 10 else 'low' if variance
def adjust_precision(model, complexity, device):
"""Adjusts model precision based on complexity."""
dtype = {'high': torch.float64, 'medium': torch.float32, 'low': torch.float16}[complexity]
return model.to(dtype=dtype, device=device)

def main():
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
model = ElegantNN().to(device)
optimizer = optim.SGD(model.parameters(), lr=0.01)
criterion = nn.CrossEntropyLoss()

transform = transforms.Compose([
transforms.ToTensor(),
transforms.Normalize((0.5,), (0.5,))
])
dataset = datasets.MNIST(root='./data', train=True, download=True, transform=transform)
loader = DataLoader(dataset, batch_size=64, shuffle=True)

epochs = 5
for epoch in range(epochs):
model.train()
for i, (inputs, targets) in enumerate(loader):
if i == 0: # Adjust precision once per epoch
with torch.no_grad():
sample_outputs = model(inputs.to(device))
complexity = evaluate_complexity(sample_outputs)
model = adjust_precision(model, complexity, device)
print(f"Epoch {epoch}, Complexity: {complexity}")

inputs, targets = inputs.to(device), targets.to(device)
optimizer.zero_grad()
outputs = model(inputs)
loss = criterion(outputs, targets)
loss.backward()
optimizer.step()

print(f"Epoch {epoch}, Loss: {loss.item()}")

if __name__ == "__main__":
main()



This post first appeared on A Day Dream Lived., please read the originial post: here

Share the post

Adjusted precision learning with Fuzzer Nn by Luminosity-e

×

Subscribe to A Day Dream Lived.

Get updates delivered right to your inbox!

Thank you for your subscription

×