def train_left_fit_by_generator(self): self.trn_gen = generator.DataGenerator(self.train_x, self.train_y, **self.params) model = self.model accept_cur = False cur_epoch = self.decide_epoch_curround() if self.fullvalid_stage: m_history = model.fit_generator( self.trn_gen, steps_per_epoch=int( len(self.train_x) // self.params["batch_size"]), validation_data=self.g_valid_gen, epochs=cur_epoch, max_queue_size=10, callbacks=self.callbacks, use_multiprocessing=False, workers=1, verbose=ThinRes34Config.VERBOSE, ) cur_valid_loss = round(m_history.history.get("val_loss")[-1], 6) cur_valid_acc = round(m_history.history.get("val_acc")[-1], 6) self.g_val_loss_list.append(cur_valid_loss) self.g_val_acc_list.append(cur_valid_acc) else: self.trn_gen = generator.DataGenerator(self.train_x, self.train_y, **self.params) m_history = model.fit_generator( self.trn_gen, steps_per_epoch=int( len(self.train_x) // self.params["batch_size"]), epochs=cur_epoch, max_queue_size=10, callbacks=self.callbacks, use_multiprocessing=False, workers=1, verbose=ThinRes34Config.VERBOSE, ) cur_valid_loss = 100 cur_valid_acc = -1 cur_train_loss = round(m_history.history.get("loss")[-1], 6) cur_train_acc = round(m_history.history.get("acc")[-1], 6) cur_lr = m_history.history.get("lr")[-1] self.g_train_loss_list.append(cur_train_loss) self.g_train_acc_list.append(cur_train_acc) self.g_his_eval_dict[self.round_idx] = { "t_loss": cur_train_loss, "t_acc": cur_train_acc, "v_loss": cur_valid_loss, "v_acc": cur_valid_acc } accept_cur = self.train_bestmodel_decision() if self.fullvalid_stage: self.g_accept_cur_list.append(accept_cur) return model, accept_cur
def decide_if_full_valid(self): if self.round_idx == self.tr34_mconfig.FULL_VAL_R_START: self.accpet_loss_list = [100] self.imp_feat_args["mode"] = "train" self.g_valid_x_features = ut.pre_trans_wav_update(self.g_valid_x, self.imp_feat_args) self.g_valid_gen = generator.DataGenerator(self.g_valid_x_features, self.g_valid_y, **self.params) if self.round_idx > self.tr34_mconfig.FULL_VAL_R_START: return True else: return False
def train_fit_first_by_generator(self): self.trn_gen = generator.DataGenerator(self.train_x, self.train_y, **self.params) self.first_r_train_x = self.train_x self.first_r_data_generator = self.trn_gen cur_epoch = self.decide_epoch_curround() early_stopping = TerminateOnBaseline(monitor="acc", baseline=0.999) self.model.fit_generator( self.first_r_data_generator, steps_per_epoch=int(len(self.first_r_train_x) // self.params["batch_size"] // 2), epochs=cur_epoch, max_queue_size=10, callbacks=self.callbacks + [early_stopping], use_multiprocessing=False, workers=1, verbose=ThinRes34Config.VERBOSE, ) return