11import numpy as np
22from sklearn .model_selection import KFold
33import torch
4- from torch import nn
5- import torch .optim as optim
4+ from torch import nn as nn
65from spotPython .utils .device import getDevice
76from torch .utils .data import random_split
87from spotPython .utils .classes import get_additional_attributes
@@ -77,6 +76,8 @@ def evaluate_cv(
7776 epochs = net .epochs
7877 batch_size = net .batch_size
7978 k_folds = net .k_folds
79+ criterion_instance = net .criterion
80+ optimizer_instance = net .optimizer
8081 removed_attributes = get_additional_attributes (net )
8182 net = remove_attributes (net , removed_attributes )
8283 results = {}
@@ -88,8 +89,10 @@ def evaluate_cv(
8889 print ("We will use" , torch .cuda .device_count (), "GPUs!" )
8990 net = nn .DataParallel (net )
9091 net .to (device )
91- criterion = nn .CrossEntropyLoss ()
92- optimizer = optim .Adam (net .parameters (), lr = lr )
92+ # criterion = nn.CrossEntropyLoss()
93+ # optimizer = optim.Adam(net.parameters(), lr=lr)
94+ optimizer = optimizer_instance (net .parameters (), lr = lr )
95+ criterion = criterion_instance
9396 kfold = KFold (n_splits = k_folds , shuffle = shuffle )
9497 for fold , (train_ids , val_ids ) in enumerate (kfold .split (dataset )):
9598 print (f"Fold: { fold + 1 } " )
@@ -116,6 +119,8 @@ def evaluate_cv(
116119 net .epochs = epochs
117120 net .batch_size = batch_size
118121 net .k_folds = k_folds
122+ net .criterion = criterion_instance
123+ net .optimizer = optimizer_instance
119124 return df_eval , df_preds
120125
121126
@@ -126,6 +131,8 @@ def evaluate_hold_out(
126131 epochs = net .epochs
127132 batch_size = net .batch_size
128133 patience = net .patience
134+ criterion_instance = net .criterion
135+ optimizer_instance = net .optimizer
129136 removed_attributes = get_additional_attributes (net )
130137 net = remove_attributes (net , removed_attributes )
131138 try :
@@ -136,9 +143,11 @@ def evaluate_hold_out(
136143 print ("We will use" , torch .cuda .device_count (), "GPUs!" )
137144 net = nn .DataParallel (net )
138145 net .to (device )
139- criterion = nn .CrossEntropyLoss ()
146+ # criterion = nn.CrossEntropyLoss()
140147 # TODO: optimizer = optim.Adam(net.parameters(), lr=lr)
141- optimizer = optim .SGD (net .parameters (), lr = lr , momentum = 0.9 )
148+ # optimizer = optim.SGD(net.parameters(), lr=lr, momentum=0.9)
149+ optimizer = optimizer_instance (net .parameters (), lr = lr )
150+ criterion = criterion_instance
142151 if test_dataset is None :
143152 trainloader , valloader = create_train_val_data_loaders (
144153 dataset = train_dataset , batch_size = batch_size , shuffle = shuffle
@@ -189,6 +198,8 @@ def evaluate_hold_out(
189198 net .epochs = epochs
190199 net .batch_size = batch_size
191200 net .patience = patience
201+ net .criterion = criterion_instance
202+ net .optimizer = optimizer_instance
192203 print (f"Returned to Spot: Validation loss: { df_eval } " )
193204 print ("----------------------------------------------" )
194205 return df_eval , df_preds
@@ -270,6 +281,8 @@ def train_save(net, train_dataset, shuffle, device=None, show_batch_interval=10_
270281 epochs = net .epochs
271282 batch_size = net .batch_size
272283 patience = net .patience
284+ criterion_instance = net .criterion
285+ optimizer_instance = net .optimizer
273286 removed_attributes = get_additional_attributes (net )
274287 net = remove_attributes (net , removed_attributes )
275288 try :
@@ -280,9 +293,11 @@ def train_save(net, train_dataset, shuffle, device=None, show_batch_interval=10_
280293 print ("We will use" , torch .cuda .device_count (), "GPUs!" )
281294 net = nn .DataParallel (net )
282295 net .to (device )
283- criterion = nn .CrossEntropyLoss ()
296+ # criterion = nn.CrossEntropyLoss()
284297 # TODO: optimizer = optim.Adam(net.parameters(), lr=lr)
285- optimizer = optim .SGD (net .parameters (), lr = lr , momentum = 0.9 )
298+ # optimizer = optim.SGD(net.parameters(), lr=lr, momentum=0.9)
299+ optimizer = optimizer_instance (net .parameters (), lr = lr )
300+ criterion = criterion_instance
286301 trainloader , valloader = create_train_val_data_loaders (
287302 dataset = train_dataset , batch_size = batch_size , shuffle = shuffle
288303 )
@@ -329,6 +344,8 @@ def train_save(net, train_dataset, shuffle, device=None, show_batch_interval=10_
329344 net .epochs = epochs
330345 net .batch_size = batch_size
331346 net .patience = patience
347+ net .criterion = criterion_instance
348+ net .optimizer = optimizer_instance
332349 print (f"Returned to Spot: Validation loss: { df_eval } " )
333350 print ("----------------------------------------------" )
334351 return df_eval , df_preds
@@ -339,6 +356,8 @@ def test_saved(net, shuffle, test_dataset=None, device=None, show_batch_interval
339356 epochs = net .epochs
340357 batch_size = net .batch_size
341358 patience = net .patience
359+ criterion_instance = net .criterion
360+ optimizer_instance = net .optimizer
342361 removed_attributes = get_additional_attributes (net )
343362 net = remove_attributes (net , removed_attributes )
344363 try :
@@ -349,7 +368,8 @@ def test_saved(net, shuffle, test_dataset=None, device=None, show_batch_interval
349368 print ("We will use" , torch .cuda .device_count (), "GPUs!" )
350369 net = nn .DataParallel (net )
351370 net .to (device )
352- criterion = nn .CrossEntropyLoss ()
371+ # criterion = nn.CrossEntropyLoss()
372+ criterion = criterion_instance
353373 valloader = torch .utils .data .DataLoader (
354374 test_dataset , batch_size = int (batch_size ), shuffle = shuffle , num_workers = 0
355375 )
@@ -364,6 +384,8 @@ def test_saved(net, shuffle, test_dataset=None, device=None, show_batch_interval
364384 net .epochs = epochs
365385 net .batch_size = batch_size
366386 net .patience = patience
387+ net .criterion = criterion_instance
388+ net .optimizer = optimizer_instance
367389 print (f"Returned to Spot: Validation loss: { df_eval } " )
368390 print ("----------------------------------------------" )
369391 return df_eval , df_preds
0 commit comments