Source code for domainlab.tasks.task_dset

"""
Use dictionaries to create train and test domain split
"""
from domainlab.tasks.b_task_classif import NodeTaskDictClassif  # abstract class


[docs] def mk_task_dset( isize, taskna="task_custom", # name of the task dim_y=None, list_str_y=None, parent=NodeTaskDictClassif, succ=None, ): """ make a task via a dictionary of dataset where the key is domain value is a tuple of dataset for training and dataset for validation (can be identical to training) """ class NodeTaskDset(parent): """ Use dictionaries to create train and test domain split """ def conf_without_args(self): """ set member variables """ self._name = taskna if list_str_y is None and dim_y is None: raise RuntimeError( "arguments list_str_y and dim_y can not be both None!" ) self.list_str_y = ( list_str_y # list_str_y has to be initialized before dim_y ) self.dim_y = dim_y if self.list_str_y is None: self.list_str_y = [f"class{ele}" for ele in range(0, self.dim_y)] self.isize = isize def get_dset_by_domain(self, args, na_domain, split=False): """ each domain correspond to one dataset, must be implemented by child class """ return self.dict_dset_all[na_domain] def init_business(self, args, trainer=None): """ create a dictionary of datasets """ self.set_list_domains(list(self.dict_dset_all.keys())) super().init_business(args, trainer) def add_domain(self, name, dset_tr, dset_val=None): """ add domain via, name, dataset and transformations """ self.dict_dset_all[name] = (dset_tr, dset_val) # when add a new domain, change self state self.set_list_domains(list(self.dict_dset_all.keys())) return NodeTaskDset(succ=succ)