| device = torch.device("cuda" if torch.cuda.is_available() else "cpu") |
|
|
| model_instance = model().to(device) |
|
|
| |
| criterion = nn.CrossEntropyLoss() |
| optimizer = optim.Adam(model_instance.parameters(), lr=0.001) |
|
|
| |
| num_epochs = 10 |
|
|
| |
| def train_model(train_loader, model, criterion, optimizer, num_epochs): |
| for epoch in range(num_epochs): |
| model.train() |
| running_loss = 0.0 |
| correct_predictions = 0 |
| total_predictions = 0 |
|
|
| |
| for inputs, labels in tqdm(train_loader, desc=f"Epoch {epoch + 1}/{num_epochs}"): |
| inputs, labels = inputs.to(device), labels.to(device) |
|
|
| |
| optimizer.zero_grad() |
|
|
| |
| outputs = model(inputs) |
|
|
| |
| loss = criterion(outputs, labels) |
|
|
| |
| loss.backward() |
| optimizer.step() |
|
|
| |
| running_loss += loss.item() |
|
|
| |
| _, predicted = torch.max(outputs, 1) |
| correct_predictions += (predicted == labels).sum().item() |
| total_predictions += labels.size(0) |
|
|
| |
| avg_loss = running_loss / len(train_loader) |
| accuracy = 100 * correct_predictions / total_predictions |
|
|
| print(f"Epoch [{epoch + 1}/{num_epochs}], Loss: {avg_loss:.4f}, Accuracy: {accuracy:.2f}%") |
|
|
| |
| train_model(train_loader, model_instance, criterion, optimizer, num_epochs) |
|
|