Logo ROOT  
Reference Guide
 
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
Loading...
Searching...
No Matches
PyTorch_Generate_CNN_Model.py
2from torch import nn
3
4# Define model
5
6print("running Torch code defining the model....")
7
8# Custom Reshape Layer
9class Reshape(torch.nn.Module):
10 def forward(self, x):
11 return x.view(-1,1,16,16)
12
13# CNN Model Definition
15 Reshape(),
16 nn.Conv2d(1, 10, kernel_size=3, padding=1),
17 nn.ReLU(),
19 nn.Conv2d(10, 10, kernel_size=3, padding=1),
20 nn.ReLU(),
21 nn.MaxPool2d(kernel_size=2),
22 nn.Flatten(),
23 nn.Linear(10*8*8, 256),
24 nn.ReLU(),
25 nn.Linear(256, 2),
27 )
28
29# Construct loss function and Optimizer.
32
33
36 schedule, schedulerSteps = scheduler
37 best_val = None
38
39 # Setup GPU
40 device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')
41 model = model.to(device)
42
43 for epoch in range(num_epochs):
44 # Training Loop
45 # Set to train mode
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)
52 output = model(X)
53 target = y
57
58 # print train statistics
59 running_train_loss += train_loss.item()
60 if i % 4 == 3: # print every 4 mini-batches
61 print(f"[{epoch+1}, {i+1}] train loss: {running_train_loss / 4 :.3f}")
62 running_train_loss = 0.0
63
64 if schedule:
65 schedule(optimizer, epoch, schedulerSteps)
66
67 # Validation Loop
68 # Set to eval mode
70 with torch.no_grad():
71 for i, (X, y) in enumerate(val_loader):
72 X, y = X.to(device), y.to(device)
73 output = model(X)
74 target = y
76 running_val_loss += val_loss.item()
77
78 curr_val = running_val_loss / len(val_loader)
79 if save_best:
80 if best_val==None:
81 best_val = curr_val
82 best_val = save_best(model, curr_val, best_val)
83
84 # print val statistics per epoch
85 print(f"[{epoch+1}] val loss: {curr_val :.3f}")
86 running_val_loss = 0.0
87
88 print(f"Finished Training on {epoch+1} Epochs!")
89
90 return model
91
92
94 # Set to eval mode
95
96 device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')
97 model = model.to(device)
98
100
101
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)
104
105 predictions = []
106 with torch.no_grad():
107 for i, data in enumerate(test_loader):
108 X = data[0].to(device)
109 outputs = model(X)
110 predictions.append(outputs)
111 preds = torch.cat(predictions)
112
113 return preds.cpu().numpy()
114
115
117
118# Store model to file
120torch.jit.save(m,"PyTorchModelCNN.pt")
121print("The PyTorch CNN model is created and saved as PyTorchModelCNN.pt")
ROOT::Detail::TRangeCast< T, true > TRangeDynCast
TRangeDynCast is an adapter class that allows the typed iteration through a TCollection.
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