This code trains a simple model for one step, saves the entire model, loads it back, and makes a prediction.
import torch
import torch.nn as nn
import torch.optim as optim
# Define a simple model
class SimpleNet(nn.Module):
def __init__(self):
super().__init__()
self.fc = nn.Linear(2, 1)
def forward(self, x):
return self.fc(x)
# Create model instance
model = SimpleNet()
# Dummy input and target
inputs = torch.tensor([[1.0, 2.0], [3.0, 4.0]])
targets = torch.tensor([[1.0], [2.0]])
# Loss and optimizer
criterion = nn.MSELoss()
optimizer = optim.SGD(model.parameters(), lr=0.01)
# Train for 1 step
model.train()
optimizer.zero_grad()
outputs = model(inputs)
loss = criterion(outputs, targets)
loss.backward()
optimizer.step()
# Save entire model
PATH = 'entire_model.pth'
torch.save(model, PATH)
# Load model
loaded_model = torch.load(PATH)
loaded_model.eval()
# Predict with loaded model
with torch.no_grad():
pred = loaded_model(torch.tensor([[5.0, 6.0]]))
print(f"Loss after 1 step: {loss.item():.4f}")
print(f"Prediction for input [5.0, 6.0]: {pred.item():.4f}")