Selaa lähdekoodia

Model working on server!

Nicholas Schense 1 vuosi sitten
vanhempi
commit
3f6187a21b
2 muutettua tiedostoa jossa 23 lisäystä ja 18 poistoa
  1. 23 17
      main.py
  2. 0 1
      utils/models.py

+ 23 - 17
main.py

@@ -28,10 +28,11 @@ from datetime import datetime
 import torch.optim as optim
 import utils.models as models
 import utils.layers as ly
+from tqdm import tqdm
 
-#FOR TESTING
-import torchsummary
-
+#Set Default GPU
+cuda_device = torch.device('cuda:1')
+torch.set_default_device(cuda_device)
 
 print("--- RUNNING ---")
 print("Pytorch Version: " + torch. __version__)
@@ -39,29 +40,33 @@ print("Pytorch Version: " + torch. __version__)
 # data & training properties:
 val_split = 0.2     # % of val and test, rest will be train
 runs = 1
-epochs = 100
+epochs = 10
 time_stamp = timestamp = datetime.now().strftime('%Y%m%d_%H%M%S')
 seeds = [np.random.randint(0, 1000) for _ in range(runs)]
 
+#Data Path
+mri_datapath = '/data/data_wnx1/_Data/AlzheimersDL/CNN+RNN-2class-1cnn+data/PET_volumes_customtemplate_float32/'
 
+#Local Path
+local_path = '/export/home/nschense/alzheimers/Pytorch_CNN-RNN'
 
-mri_datapath = './ADNI_volumes_customtemplate_float32/'
-xls_file = './Lp_ADNIMERGE.csv'
+xls_path = local_path + '/LP_ADNIMERGE.csv'
+saved_model_path = local_path + 'saved_models/'
 
 
 # TODO: Datasets include multiple labels, such as medical info
 
 
 def evaluate_model(seed):
-    training_data, val_data, test_data = prepare_datasets(mri_datapath, xls_file, val_split, seed)
+    training_data, val_data, test_data = prepare_datasets(mri_datapath, xls_path, val_split, seed)
     
 
     batch_size = 64
 
     # Create data loaders
-    train_dataloader = DataLoader(training_data, batch_size=batch_size, shuffle=True)
-    test_dataloader = DataLoader(test_data, batch_size=batch_size, shuffle=True)
-    val_dataloader = DataLoader(val_data, batch_size=batch_size, shuffle=True)
+    train_dataloader = DataLoader(training_data, batch_size=batch_size, shuffle=True, generator=torch.Generator(device=cuda_device))
+    test_dataloader = DataLoader(test_data, batch_size=batch_size, shuffle=True, generator=torch.Generator(device=cuda_device))
+    val_dataloader = DataLoader(val_data, batch_size=batch_size, shuffle=True, generator=torch.Generator(device=cuda_device))
 
     #Print Shape of Image Data
     print("Shape of MRI Data: ", training_data[0][0].shape)
@@ -71,24 +76,25 @@ def evaluate_model(seed):
     print("Length of Training Data: ", len(train_dataloader))
 
 
-    print("Initializing Model...")
-    model_CNN = models.CNN_Net(1, 2, 0.5).cuda()
+    print("--- INITIALIZING MODEL ---")
+    model_CNN = models.CNN_Net(1, 2, 0.5).to(cuda_device)
     criterion = nn.BCELoss()
     optimizer = optim.Adam(model_CNN.parameters(), lr=0.001)
     print("Seed: ", seed)
     epoch_number = 0
 
-    print("Training Model...")
+    print("--- TRAINING MODEL ---")
     for epoch in range(epochs):
         running_loss = 0.0
-        for i, data in enumerate(train_dataloader, 0):
+        length = len(train_dataloader)
+        for i, data in tqdm(enumerate(train_dataloader, 0), total=length, desc="Epoch " + str(epoch), unit="batch"):
             mri, xls, label = data
 
             optimizer.zero_grad()
 
-            mri = mri.cuda().float()
-            xls = xls.cuda().float()
-            label = label.cuda().float()
+            mri = mri.to(cuda_device).float()
+            xls = xls.to(cuda_device).float()
+            label = label.to(cuda_device).float()
 
 
             outputs = model_CNN((mri, xls))

+ 0 - 1
utils/models.py

@@ -7,7 +7,6 @@ import utils.layers as ly
 
 import torch
 import torchvision
-import torchsummary as ts
 
 
 class Parameters: