6print(
"running Torch code defining the model....")
11 return x.view(-1,1,16,16)
14net = torch.nn.Sequential(
16 nn.Conv2d(1, 10, kernel_size=3, padding=1),
19 nn.Conv2d(10, 10, kernel_size=3, padding=1),
21 nn.MaxPool2d(kernel_size=2),
23 nn.Linear(10*8*8, 256),
30criterion = nn.BCELoss()
31optimizer = torch.optim.Adam
34def fit(model, train_loader, val_loader, num_epochs, batch_size, optimizer, criterion, save_best, scheduler):
35 trainer =
optimizer(model.parameters(), lr=0.01)
36 schedule, schedulerSteps = scheduler
40 device = torch.device(
'cuda' if torch.cuda.is_available()
else 'cpu')
41 model = model.to(device)
43 for epoch
in range(num_epochs):
47 running_train_loss = 0.0
48 running_val_loss = 0.0
49 for i, (X, y)
in enumerate(train_loader):
51 X, y = X.to(device), y.to(device)
59 running_train_loss += train_loss.item()
61 print(f
"[{epoch+1}, {i+1}] train loss: {running_train_loss / 4 :.3f}")
62 running_train_loss = 0.0
65 schedule(optimizer, epoch, schedulerSteps)
71 for i, (X, y)
in enumerate(val_loader):
72 X, y = X.to(device), y.to(device)
76 running_val_loss += val_loss.item()
78 curr_val = running_val_loss /
len(val_loader)
82 best_val = save_best(model, curr_val, best_val)
85 print(f
"[{epoch+1}] val loss: {curr_val :.3f}")
86 running_val_loss = 0.0
88 print(f
"Finished Training on {epoch+1} Epochs!")
93def predict(model, test_X, batch_size=100):
96 device = torch.device(
'cuda' if torch.cuda.is_available()
else 'cpu')
97 model = model.to(device)
102 test_dataset = torch.utils.data.TensorDataset(torch.Tensor(test_X))
103 test_loader = torch.utils.data.DataLoader(test_dataset, batch_size=batch_size, shuffle=
False)
106 with torch.no_grad():
107 for i, data
in enumerate(test_loader):
108 X = data[0].to(device)
110 predictions.append(outputs)
111 preds = torch.cat(predictions)
113 return preds.cpu().numpy()
116load_model_custom_objects = {
"optimizer": optimizer,
"criterion": criterion,
"train_func": fit,
"predict_func": predict}
119m = torch.jit.script(net)
120torch.jit.save(m,
"PyTorchModelCNN.pt")
121print(
"The PyTorch CNN model is created and saved as PyTorchModelCNN.pt")
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t Int_t Int_t Window_t TString Int_t GCValues_t GetPrimarySelectionOwner GetDisplay GetScreen GetColormap GetNativeEvent const char const char dpyName wid window const char font_name cursor keysym reg const char only_if_exist regb h Point_t winding char text const char depth char const char Int_t count const char ColorStruct_t color const char Pixmap_t Pixmap_t PictureAttributes_t attr const char char ret_data h unsigned char height h Atom_t Int_t ULong_t ULong_t unsigned char prop_list Atom_t Atom_t Atom_t Time_t UChar_t len
predict(model, test_X, batch_size=100)
fit(model, train_loader, val_loader, num_epochs, batch_size, optimizer, criterion, save_best, scheduler)