criterion = nn.CrossEntropyLoss(reduction='sum') optimizer = torch.optim.Adam(model.parameters(), lr=lr) best_epoch, best_loss, best_acc = -1, 1000.0, 0 # 模型训练,并保存最优参数 for epoch in range(epochs): train_loss = model.mytraining(train_loader, criterion, optimizer, device) val_loss = model.myvalidating(val_loader, criterion, device) # 记录下验证集精度 if val_loss < best_loss: best_epoch, best_loss = epoch, val_loss # 保存model可学习参数 torch.save(model.state_dict(), 'Model/model.pt') # 打印相关信息 Tools.printInfo(epoch, train_loss, val_loss, best_epoch, best_loss) else: # 预测过程 test_path, test_label = Tools.dataFromPath(test_img_path) test_dataset = SVHNDataset( test_path, test_label, transforms.Compose([ transforms.Resize((64, 128)), transforms.ColorJitter(0.3, 0.3, 0.2), transforms.RandomRotation(5), transforms.ToTensor(), transforms.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225]) ])) test_loader = torch.utils.data.DataLoader( test_dataset,