def train(self, train_data, epochs, valid_data, final_rate=0.5, resume_chkpt=None): """ Args: train_data (iterator): train data iterator epochs (int): total epochs of training valid_data (iterator): valid data iterator final_rate (float): final sample rate for ground truth resume_chkpt (str): resume checkpoint path """ if resume_chkpt is not None: self.start_epoch, self.model, self.optimizer = \ load_chkpt(resume_chkpt, self.model, self.optimizer, self.cuda) self.start_epoch += 1 self.schedule_func = self.get_sample_func(epochs, len(train_data), final_rate) for epoch in range(self.start_epoch, epochs + 1): _, _ = self.train_on_epoch(train_data, epoch) acc, ppl = self.eval_on_epoch(valid_data, epoch) self.epoch_step(ppl, epoch) drop_chkpt(epoch, self.model, self.optimizer, acc, ppl)
def train(self, train_data, epochs, valid_data, sample_size=10, sample_length=20, resume_chkpt=None): """ Args: train_data (iterator): train data iterator epochs (int): total epochs of training valid_data (iterator): valid data iterator sample_size (int): sample size of each sentence in every batch sample_length (int): max sample length of decoder resume_chkpt (str): resume checkpoint path """ if resume_chkpt is not None: self.start_epoch, self.model, self.optimizer = \ load_chkpt(resume_chkpt, self.model, self.optimizer, self.cuda) self.start_epoch += 1 self.sample_size = sample_size self.sample_length = sample_length for epoch in range(self.start_epoch, epochs + 1): _ = self.train_on_epoch(train_data, epoch) acc, ppl = self.eval_on_epoch(valid_data, epoch) self.epoch_step(ppl, epoch) drop_chkpt(epoch, self.model, self.optimizer, acc, ppl)
def train(self, train_data, epochs, valid_data, resume_chkpt=None): """ Args: train_data (iterator): train data iterator epochs (int): total epochs of training valid_data (iterator): valid data iterator resume_chkpt (str): resume checkpoint path """ if resume_chkpt is not None: self.start_epoch, self.model, self.optimizer = \ load_chkpt(resume_chkpt, self.model, self.optimizer, self.cuda) self.start_epoch += 1 for epoch in range(self.start_epoch, epochs + 1): _, _ = self.train_on_epoch(train_data, epoch) acc, ppl = self.eval_on_epoch(valid_data, epoch) self.epoch_step(ppl, epoch) drop_chkpt(epoch, self.model, self.optimizer, acc, ppl)
def prepare_model(self, chkpt, cuda): _, self.model = load_chkpt(chkpt, self.model) if cuda: self.cuda = True self.model = self.model.cuda() self.model.eval()