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)