def perform(self): for model_description in self.models: modelname = model_description['modelname'] modeltype = model_description['modeltype'] modelparams = model_description['parameters'] mpath = self.outputfolder+self.experiment_name+'/models/'+modelname+'/' # create folder for model outputs if not os.path.exists(mpath): os.makedirs(mpath) if not os.path.exists(mpath+'results/'): os.makedirs(mpath+'results/') n_classes = self.Y.shape[1] # load respective model if modeltype == 'WAVELET': from models.wavelet import WaveletModel model = WaveletModel(modelname, n_classes, self.sampling_frequency, mpath, self.input_shape, **modelparams) elif modeltype == "fastai_model": from models.fastai_model import fastai_model model = fastai_model(modelname, n_classes, self.sampling_frequency, mpath, self.input_shape, **modelparams) elif modeltype == "YOUR_MODEL_TYPE": # YOUR MODEL GOES HERE! from models.your_model import YourModel model = YourModel(modelname, n_classes, self.sampling_frequency, mpath, self.input_shape, **modelparams) else: assert(True) break # fit model model.fit(self.X_train, self.y_train, self.X_val, self.y_val) # predict and dump model.predict(self.X_train).dump(mpath+'y_train_pred.npy') model.predict(self.X_val).dump(mpath+'y_val_pred.npy') model.predict(self.X_test).dump(mpath+'y_test_pred.npy') modelname = 'ensemble' # create ensemble predictions via simple mean across model predictions (except naive predictions) ensemblepath = self.outputfolder+self.experiment_name+'/models/'+modelname+'/' # create folder for model outputs if not os.path.exists(ensemblepath): os.makedirs(ensemblepath) if not os.path.exists(ensemblepath+'results/'): os.makedirs(ensemblepath+'results/') # load all predictions ensemble_train, ensemble_val, ensemble_test = [],[],[] for model_description in os.listdir(self.outputfolder+self.experiment_name+'/models/'): if not model_description in ['ensemble', 'naive']: mpath = self.outputfolder+self.experiment_name+'/models/'+model_description+'/' ensemble_train.append(np.load(mpath+'y_train_pred.npy', allow_pickle=True)) ensemble_val.append(np.load(mpath+'y_val_pred.npy', allow_pickle=True)) ensemble_test.append(np.load(mpath+'y_test_pred.npy', allow_pickle=True)) # dump mean predictions np.array(ensemble_train).mean(axis=0).dump(ensemblepath + 'y_train_pred.npy') np.array(ensemble_test).mean(axis=0).dump(ensemblepath + 'y_test_pred.npy') np.array(ensemble_val).mean(axis=0).dump(ensemblepath + 'y_val_pred.npy')
def perform(self): for model_description in self.models: modelname = model_description['modelname'] modeltype = model_description['modeltype'] modelparams = model_description['parameters'] mpath = self.outputfolder + self.experiment_name + '/models/' + modelname + '/' # create folder for model outputs if not os.path.exists(mpath): os.makedirs(mpath) if not os.path.exists(mpath + 'results/'): os.makedirs(mpath + 'results/') n_classes = self.Y.shape[1] # load respective model if modeltype == 'WAVELET': from models.wavelet import WaveletModel model = WaveletModel(modelname, n_classes, self.sampling_frequency, mpath, self.input_shape, **modelparams) elif modeltype == "fastai_model": from models.fastai_model import fastai_model model = fastai_model(modelname, n_classes, self.sampling_frequency, mpath, self.input_shape, **modelparams) elif modeltype == "NET1D": # YOUR MODEL GOES HERE! from models.your_model import YourModel model = YourModel(modelname, n_classes, self.sampling_frequency, mpath, self.input_shape, **modelparams) elif modeltype == "NET1D_ICBEB": # YOUR MODEL GOES HERE! from models.your_model_icbeb import YourModel_ICBEB model = YourModel_ICBEB(modelname, n_classes, self.sampling_frequency, mpath, self.input_shape, **modelparams) else: assert (True) break print(self.X_train.shape, self.y_train.shape) # fit model model.fit(self.X_train, self.y_train, self.X_val, self.y_val, self.pid_val) # predict and dump # model.predict(self.X_train).dump(mpath+'y_train_pred.npy') model.predict(self.X_val, self.pid_val).dump(mpath + 'y_val_pred.npy') model.predict(self.X_test, self.pid_test).dump(mpath + 'y_test_pred.npy')