def train(self):
        train_loss = np.array([])
        valid_loss = np.array([])
        print("start train")
        for epoch in range(self.epoch_num):
            # train
            print('epoch{0}'.format(epoch))
            start = time.time()
            self.model.train()
            tmp_train_loss, _, _, _, _ = self._run(
                mode='train', data_loader=self.train_data_loader)
            train_loss = np.append(train_loss,
                                   tmp_train_loss.cpu().clone().numpy())

            self.model.eval()
            with torch.no_grad():
                tmp_valid_loss, est_source, est_mask, noisy_amp_spec, clean_amp_spec = self._run(
                    mode='validation', data_loader=self.valid_data_loader)
                valid_loss = np.append(valid_loss,
                                       tmp_valid_loss.cpu().clone().numpy())

            if (epoch + 1) % 10 == 0:
                plot_time = time.time()
                est_source = taF.complex_norm(est_source)
                show_TF_domein_result(train_loss, valid_loss,
                                      noisy_amp_spec[0, :, :],
                                      est_mask[0, :, :], est_source[0, :, :],
                                      clean_amp_spec[0, :, :])
                print('plot_time:', time.time() - plot_time)
                torch.save(self.model.state_dict(),
                           self.save_path + 'u_net{0}.ckpt'.format(epoch + 1))

            end = time.time()
            print('----excute time: {0}'.format(end - start))
    def train(self):
        train_loss = np.array([])
        print("start train")
        for epoch in range(self.epoch_num):
            # train
            print('epoch{0}'.format(epoch))
            start = time.time()
            self.model.train()
            tmp_train_loss, est_source, est_mask, mix_amp_spec, true_amp_spec = self._run(
                mode='train', data_loader=self.train_data_loader)
            train_loss = np.append(train_loss,
                                   tmp_train_loss.cpu().clone().numpy())

            if (epoch + 1) % 10 == 0:
                plot_time = time.time()
                show_TF_domein_result(train_loss, mix_amp_spec[0, :, :],
                                      est_mask[0,
                                               0, :, :], est_source[0,
                                                                    0, :, :],
                                      true_amp_spec[0, :, :])
                print('plot_time:', time.time() - plot_time)
                torch.save(self.model.state_dict(),
                           self.save_path + 'u_net{0}.ckpt'.format(epoch + 1))

            end = time.time()
            print('----excute time: {0}'.format(end - start))
Пример #3
0
 def train(self):
     train_loss = np.array([])
     valid_loss = np.array([])
     print("start train")
     for epoch in range(self.epoch_num):
         # train
         print('epoch{0}'.format(epoch))
         start = time.time()
         self.model.train()
         tmp_train_loss, _, _, _ = self._run(self.model, self.criterion, self.train_data_loader, self.train_batch_size, mode='train')
         train_loss = np.append(train_loss, tmp_train_loss.cpu().clone().numpy())
         # validation
         self.model.eval()
         with torch.no_grad():
            tmp_valid_loss, est_source, est_mask, mix_amp_spec = self._run(self.model, self.criterion, self.valid_data_loader, self.valid_batch_size, mode='validation')
            valid_loss = np.append(valid_loss, tmp_valid_loss.cpu().clone().numpy())
              
         if (epoch + 1) % 10 == 0:
             torch.save(self.model.state_dict(), self.save_path + 'u_net{0}.ckpt'.format(epoch + 1))
         
         end = time.time()
         print('----excute time: {0}'.format(end - start))
         show_TF_domein_result(valid_loss, mix_amp_spec[0,:,:], est_mask[0,0,:,:], est_source[0,0,:,:])