Module monk.gluon.finetune.level_5_state_base
Expand source code
from gluon.finetune.imports import *
from system.imports import *
from gluon.finetune.level_4_evaluation_base import finetune_evaluation
class finetune_state(finetune_evaluation):
'''
Base class for Monk states - train, eval_infer, resume, copy_from, pseudo_copy_from (for running sub-experiments)
Args:
verbose (int): Set verbosity levels
0 - Print Nothing
1 - Print desired details
'''
def __init__(self, verbose=1):
super().__init__(verbose=verbose);
###############################################################################################################################################
def set_system_state_eval_infer(self):
'''
Set system for eval_infer state
Args:
None
Returns:
None
'''
self.system_dict = read_json(self.system_dict["fname"], verbose=self.system_dict["verbose"]);
self.system_dict["states"]["eval_infer"] = True;
if(self.system_dict["training"]["status"]):
if(len(self.system_dict["dataset"]["transforms"]["test"])):
self.system_dict = retrieve_test_transforms(self.system_dict);
else:
self.custom_print("Test transforms not found.");
self.custom_print("Add test transforms");
self.custom_print("");
self.set_model_final();
else:
msg = "Model in {} not trained. Cannot perform testing or inferencing".format(self.system_dict["experiment_name"]);
raise ConstraintError(msg);
###############################################################################################################################################
###############################################################################################################################################
def set_system_state_resume_train(self):
'''
Set system for resume training state
Args:
None
Returns:
None
'''
self.system_dict = read_json(self.system_dict["fname"], verbose=self.system_dict["verbose"]);
self.system_dict["states"]["resume_train"] = True;
if(self.system_dict["dataset"]["status"]):
self.system_dict = retrieve_trainval_transforms(self.system_dict);
self.set_dataset_final();
else:
msg = "Dataset not set.\n";
msg += "Training not started. Cannot Run resume Mode";
raise ConstraintError(msg);
if(self.system_dict["model"]["status"]):
self.set_model_final();
else:
msg = "Model not set.\n";
msg += "Training not started. Cannot Run resume Mode";
raise ConstraintError(msg);
if(self.system_dict["hyper-parameters"]["status"]):
self.system_dict = retrieve_optimizer(self.system_dict);
self.system_dict = retrieve_scheduler(self.system_dict);
self.system_dict = retrieve_loss(self.system_dict);
else:
msg = "hyper-parameters not set.\n";
msg += "Training not started. Cannot Run resume Mode";
raise ConstraintError(msg);
###############################################################################################################################################
###############################################################################################################################################
def set_system_state_copy_from(self, copy_from):
'''
Set system for copied state
Args:
None
Returns:
None
'''
fname = self.system_dict["master_systems_dir_relative"] + copy_from[0] + "/" + copy_from[1] + "/experiment_state.json";
system_dict_tmp = read_json(fname, verbose=self.system_dict["verbose"]);
if(not system_dict_tmp["training"]["status"]):
self.custom_print("Project - {}, Experiment - {}, has incomplete training.".format(copy_from[0], copy_from[1]));
self.custom_print("Complete Previous training before copying from it.");
self.custom_print("");
elif(copy_from[0] == self.system_dict["project_name"] and copy_from[1] == self.system_dict["experiment_name"]):
self.custom_print("Cannot copy same experiment. Use a different experiment to copy and load a previous experiment");
self.custom_print("");
else:
self.system_dict["dataset"] = system_dict_tmp["dataset"];
self.system_dict["model"] = system_dict_tmp["model"];
self.system_dict["hyper-parameters"] = system_dict_tmp["hyper-parameters"];
self.system_dict["training"] = system_dict_tmp["training"];
self.system_dict["origin"] = [copy_from[0], copy_from[1]];
self.system_dict["training"]["outputs"] = {};
self.system_dict["training"]["outputs"]["max_gpu_memory_usage"] = 0;
self.system_dict["training"]["outputs"]["best_val_acc"] = 0;
self.system_dict["training"]["outputs"]["best_val_acc_epoch_num"] = 0;
self.system_dict["training"]["outputs"]["epochs_completed"] = 0;
self.system_dict["training"]["status"] = False;
self.system_dict["training"]["enabled"] = True;
self.system_dict["testing"] = {};
self.system_dict["testing"]["status"] = False;
save(self.system_dict);
self.system_dict = read_json(self.system_dict["fname_relative"], verbose=self.system_dict["verbose"]);
self.system_dict["states"]["copy_from"] = True;
self.system_dict = retrieve_trainval_transforms(self.system_dict);
self.Dataset();
self.set_model_final();
self.system_dict = retrieve_optimizer(self.system_dict);
self.system_dict = retrieve_scheduler(self.system_dict);
self.system_dict = retrieve_loss(self.system_dict);
###############################################################################################################################################
###############################################################################################################################################
def set_system_state_pseudo_copy_from(self, pseudo_copy_from):
'''
Set system for copied state in hyper-parameter analysis mode
Args:
None
Returns:
None
'''
fname = self.system_dict["master_systems_dir_relative"] + pseudo_copy_from[0] + "/" + pseudo_copy_from[1] + "/experiment_state.json";
system_dict_tmp = read_json(fname, verbose=self.system_dict["verbose"]);
self.system_dict["dataset"] = system_dict_tmp["dataset"];
self.system_dict["model"] = system_dict_tmp["model"];
self.system_dict["hyper-parameters"] = system_dict_tmp["hyper-parameters"];
self.system_dict["training"] = system_dict_tmp["training"];
self.system_dict["origin"] = [pseudo_copy_from[0], pseudo_copy_from[1]];
self.system_dict["training"]["outputs"] = {};
self.system_dict["training"]["outputs"]["max_gpu_memory_usage"] = 0;
self.system_dict["training"]["outputs"]["best_val_acc"] = 0;
self.system_dict["training"]["outputs"]["best_val_acc_epoch_num"] = 0;
self.system_dict["training"]["outputs"]["epochs_completed"] = 0;
self.system_dict["training"]["status"] = False;
self.system_dict["training"]["enabled"] = True;
self.system_dict["testing"] = {};
self.system_dict["testing"]["status"] = False;
save(self.system_dict);
self.system_dict = read_json(self.system_dict["fname_relative"], verbose=self.system_dict["verbose"]);
self.system_dict["states"]["pseudo_copy_from"] = True;
self.system_dict = retrieve_trainval_transforms(self.system_dict);
self.Dataset();
self.set_model_final();
self.system_dict = retrieve_optimizer(self.system_dict);
self.system_dict = retrieve_scheduler(self.system_dict);
self.system_dict = retrieve_loss(self.system_dict);
###############################################################################################################################################
Classes
class finetune_state (verbose=1)
-
Base class for Monk states - train, eval_infer, resume, copy_from, pseudo_copy_from (for running sub-experiments)
Args
verbose
:int
- Set verbosity levels 0 - Print Nothing 1 - Print desired details
Expand source code
class finetune_state(finetune_evaluation): ''' Base class for Monk states - train, eval_infer, resume, copy_from, pseudo_copy_from (for running sub-experiments) Args: verbose (int): Set verbosity levels 0 - Print Nothing 1 - Print desired details ''' def __init__(self, verbose=1): super().__init__(verbose=verbose); ############################################################################################################################################### def set_system_state_eval_infer(self): ''' Set system for eval_infer state Args: None Returns: None ''' self.system_dict = read_json(self.system_dict["fname"], verbose=self.system_dict["verbose"]); self.system_dict["states"]["eval_infer"] = True; if(self.system_dict["training"]["status"]): if(len(self.system_dict["dataset"]["transforms"]["test"])): self.system_dict = retrieve_test_transforms(self.system_dict); else: self.custom_print("Test transforms not found."); self.custom_print("Add test transforms"); self.custom_print(""); self.set_model_final(); else: msg = "Model in {} not trained. Cannot perform testing or inferencing".format(self.system_dict["experiment_name"]); raise ConstraintError(msg); ############################################################################################################################################### ############################################################################################################################################### def set_system_state_resume_train(self): ''' Set system for resume training state Args: None Returns: None ''' self.system_dict = read_json(self.system_dict["fname"], verbose=self.system_dict["verbose"]); self.system_dict["states"]["resume_train"] = True; if(self.system_dict["dataset"]["status"]): self.system_dict = retrieve_trainval_transforms(self.system_dict); self.set_dataset_final(); else: msg = "Dataset not set.\n"; msg += "Training not started. Cannot Run resume Mode"; raise ConstraintError(msg); if(self.system_dict["model"]["status"]): self.set_model_final(); else: msg = "Model not set.\n"; msg += "Training not started. Cannot Run resume Mode"; raise ConstraintError(msg); if(self.system_dict["hyper-parameters"]["status"]): self.system_dict = retrieve_optimizer(self.system_dict); self.system_dict = retrieve_scheduler(self.system_dict); self.system_dict = retrieve_loss(self.system_dict); else: msg = "hyper-parameters not set.\n"; msg += "Training not started. Cannot Run resume Mode"; raise ConstraintError(msg); ############################################################################################################################################### ############################################################################################################################################### def set_system_state_copy_from(self, copy_from): ''' Set system for copied state Args: None Returns: None ''' fname = self.system_dict["master_systems_dir_relative"] + copy_from[0] + "/" + copy_from[1] + "/experiment_state.json"; system_dict_tmp = read_json(fname, verbose=self.system_dict["verbose"]); if(not system_dict_tmp["training"]["status"]): self.custom_print("Project - {}, Experiment - {}, has incomplete training.".format(copy_from[0], copy_from[1])); self.custom_print("Complete Previous training before copying from it."); self.custom_print(""); elif(copy_from[0] == self.system_dict["project_name"] and copy_from[1] == self.system_dict["experiment_name"]): self.custom_print("Cannot copy same experiment. Use a different experiment to copy and load a previous experiment"); self.custom_print(""); else: self.system_dict["dataset"] = system_dict_tmp["dataset"]; self.system_dict["model"] = system_dict_tmp["model"]; self.system_dict["hyper-parameters"] = system_dict_tmp["hyper-parameters"]; self.system_dict["training"] = system_dict_tmp["training"]; self.system_dict["origin"] = [copy_from[0], copy_from[1]]; self.system_dict["training"]["outputs"] = {}; self.system_dict["training"]["outputs"]["max_gpu_memory_usage"] = 0; self.system_dict["training"]["outputs"]["best_val_acc"] = 0; self.system_dict["training"]["outputs"]["best_val_acc_epoch_num"] = 0; self.system_dict["training"]["outputs"]["epochs_completed"] = 0; self.system_dict["training"]["status"] = False; self.system_dict["training"]["enabled"] = True; self.system_dict["testing"] = {}; self.system_dict["testing"]["status"] = False; save(self.system_dict); self.system_dict = read_json(self.system_dict["fname_relative"], verbose=self.system_dict["verbose"]); self.system_dict["states"]["copy_from"] = True; self.system_dict = retrieve_trainval_transforms(self.system_dict); self.Dataset(); self.set_model_final(); self.system_dict = retrieve_optimizer(self.system_dict); self.system_dict = retrieve_scheduler(self.system_dict); self.system_dict = retrieve_loss(self.system_dict); ############################################################################################################################################### ############################################################################################################################################### def set_system_state_pseudo_copy_from(self, pseudo_copy_from): ''' Set system for copied state in hyper-parameter analysis mode Args: None Returns: None ''' fname = self.system_dict["master_systems_dir_relative"] + pseudo_copy_from[0] + "/" + pseudo_copy_from[1] + "/experiment_state.json"; system_dict_tmp = read_json(fname, verbose=self.system_dict["verbose"]); self.system_dict["dataset"] = system_dict_tmp["dataset"]; self.system_dict["model"] = system_dict_tmp["model"]; self.system_dict["hyper-parameters"] = system_dict_tmp["hyper-parameters"]; self.system_dict["training"] = system_dict_tmp["training"]; self.system_dict["origin"] = [pseudo_copy_from[0], pseudo_copy_from[1]]; self.system_dict["training"]["outputs"] = {}; self.system_dict["training"]["outputs"]["max_gpu_memory_usage"] = 0; self.system_dict["training"]["outputs"]["best_val_acc"] = 0; self.system_dict["training"]["outputs"]["best_val_acc_epoch_num"] = 0; self.system_dict["training"]["outputs"]["epochs_completed"] = 0; self.system_dict["training"]["status"] = False; self.system_dict["training"]["enabled"] = True; self.system_dict["testing"] = {}; self.system_dict["testing"]["status"] = False; save(self.system_dict); self.system_dict = read_json(self.system_dict["fname_relative"], verbose=self.system_dict["verbose"]); self.system_dict["states"]["pseudo_copy_from"] = True; self.system_dict = retrieve_trainval_transforms(self.system_dict); self.Dataset(); self.set_model_final(); self.system_dict = retrieve_optimizer(self.system_dict); self.system_dict = retrieve_scheduler(self.system_dict); self.system_dict = retrieve_loss(self.system_dict);
Ancestors
- gluon.finetune.level_4_evaluation_base.finetune_evaluation
- gluon.finetune.level_3_training_base.finetune_training
- gluon.finetune.level_2_model_base.finetune_model
- gluon.finetune.level_1_dataset_base.finetune_dataset
- system.base_class.system
Methods
def set_system_state_copy_from(self, copy_from)
-
Set system for copied state
Args
None
Returns
None
Expand source code
def set_system_state_copy_from(self, copy_from): ''' Set system for copied state Args: None Returns: None ''' fname = self.system_dict["master_systems_dir_relative"] + copy_from[0] + "/" + copy_from[1] + "/experiment_state.json"; system_dict_tmp = read_json(fname, verbose=self.system_dict["verbose"]); if(not system_dict_tmp["training"]["status"]): self.custom_print("Project - {}, Experiment - {}, has incomplete training.".format(copy_from[0], copy_from[1])); self.custom_print("Complete Previous training before copying from it."); self.custom_print(""); elif(copy_from[0] == self.system_dict["project_name"] and copy_from[1] == self.system_dict["experiment_name"]): self.custom_print("Cannot copy same experiment. Use a different experiment to copy and load a previous experiment"); self.custom_print(""); else: self.system_dict["dataset"] = system_dict_tmp["dataset"]; self.system_dict["model"] = system_dict_tmp["model"]; self.system_dict["hyper-parameters"] = system_dict_tmp["hyper-parameters"]; self.system_dict["training"] = system_dict_tmp["training"]; self.system_dict["origin"] = [copy_from[0], copy_from[1]]; self.system_dict["training"]["outputs"] = {}; self.system_dict["training"]["outputs"]["max_gpu_memory_usage"] = 0; self.system_dict["training"]["outputs"]["best_val_acc"] = 0; self.system_dict["training"]["outputs"]["best_val_acc_epoch_num"] = 0; self.system_dict["training"]["outputs"]["epochs_completed"] = 0; self.system_dict["training"]["status"] = False; self.system_dict["training"]["enabled"] = True; self.system_dict["testing"] = {}; self.system_dict["testing"]["status"] = False; save(self.system_dict); self.system_dict = read_json(self.system_dict["fname_relative"], verbose=self.system_dict["verbose"]); self.system_dict["states"]["copy_from"] = True; self.system_dict = retrieve_trainval_transforms(self.system_dict); self.Dataset(); self.set_model_final(); self.system_dict = retrieve_optimizer(self.system_dict); self.system_dict = retrieve_scheduler(self.system_dict); self.system_dict = retrieve_loss(self.system_dict);
def set_system_state_eval_infer(self)
-
Set system for eval_infer state
Args
None
Returns
None
Expand source code
def set_system_state_eval_infer(self): ''' Set system for eval_infer state Args: None Returns: None ''' self.system_dict = read_json(self.system_dict["fname"], verbose=self.system_dict["verbose"]); self.system_dict["states"]["eval_infer"] = True; if(self.system_dict["training"]["status"]): if(len(self.system_dict["dataset"]["transforms"]["test"])): self.system_dict = retrieve_test_transforms(self.system_dict); else: self.custom_print("Test transforms not found."); self.custom_print("Add test transforms"); self.custom_print(""); self.set_model_final(); else: msg = "Model in {} not trained. Cannot perform testing or inferencing".format(self.system_dict["experiment_name"]); raise ConstraintError(msg);
def set_system_state_pseudo_copy_from(self, pseudo_copy_from)
-
Set system for copied state in hyper-parameter analysis mode
Args
None
Returns
None
Expand source code
def set_system_state_pseudo_copy_from(self, pseudo_copy_from): ''' Set system for copied state in hyper-parameter analysis mode Args: None Returns: None ''' fname = self.system_dict["master_systems_dir_relative"] + pseudo_copy_from[0] + "/" + pseudo_copy_from[1] + "/experiment_state.json"; system_dict_tmp = read_json(fname, verbose=self.system_dict["verbose"]); self.system_dict["dataset"] = system_dict_tmp["dataset"]; self.system_dict["model"] = system_dict_tmp["model"]; self.system_dict["hyper-parameters"] = system_dict_tmp["hyper-parameters"]; self.system_dict["training"] = system_dict_tmp["training"]; self.system_dict["origin"] = [pseudo_copy_from[0], pseudo_copy_from[1]]; self.system_dict["training"]["outputs"] = {}; self.system_dict["training"]["outputs"]["max_gpu_memory_usage"] = 0; self.system_dict["training"]["outputs"]["best_val_acc"] = 0; self.system_dict["training"]["outputs"]["best_val_acc_epoch_num"] = 0; self.system_dict["training"]["outputs"]["epochs_completed"] = 0; self.system_dict["training"]["status"] = False; self.system_dict["training"]["enabled"] = True; self.system_dict["testing"] = {}; self.system_dict["testing"]["status"] = False; save(self.system_dict); self.system_dict = read_json(self.system_dict["fname_relative"], verbose=self.system_dict["verbose"]); self.system_dict["states"]["pseudo_copy_from"] = True; self.system_dict = retrieve_trainval_transforms(self.system_dict); self.Dataset(); self.set_model_final(); self.system_dict = retrieve_optimizer(self.system_dict); self.system_dict = retrieve_scheduler(self.system_dict); self.system_dict = retrieve_loss(self.system_dict);
def set_system_state_resume_train(self)
-
Set system for resume training state
Args
None
Returns
None
Expand source code
def set_system_state_resume_train(self): ''' Set system for resume training state Args: None Returns: None ''' self.system_dict = read_json(self.system_dict["fname"], verbose=self.system_dict["verbose"]); self.system_dict["states"]["resume_train"] = True; if(self.system_dict["dataset"]["status"]): self.system_dict = retrieve_trainval_transforms(self.system_dict); self.set_dataset_final(); else: msg = "Dataset not set.\n"; msg += "Training not started. Cannot Run resume Mode"; raise ConstraintError(msg); if(self.system_dict["model"]["status"]): self.set_model_final(); else: msg = "Model not set.\n"; msg += "Training not started. Cannot Run resume Mode"; raise ConstraintError(msg); if(self.system_dict["hyper-parameters"]["status"]): self.system_dict = retrieve_optimizer(self.system_dict); self.system_dict = retrieve_scheduler(self.system_dict); self.system_dict = retrieve_loss(self.system_dict); else: msg = "hyper-parameters not set.\n"; msg += "Training not started. Cannot Run resume Mode"; raise ConstraintError(msg);