コード例 #1
0
    def eval_openset(self):
        self.sequential_extract(self.valid_test,
                                f"{self.project_dir}/tmp/test.h5")
        if self.valid_enroll:
            self.sequential_extract(self.valid_enroll,
                                    f"{self.project_dir}/tmp/enroll.h5")
            enroll_embedding = f"{self.project_dir}/tmp/enroll.h5"
        else:
            enroll_embedding = f"{self.project_dir}/tmp/test.h5"

        if self.valid_target:
            self.sequential_extract(self.valid_target,
                                    f"{self.project_dir}/tmp/target.h5")
            data_target = h52dict(f"{self.project_dir}/tmp/target.h5")
            transform_lst = [PCA(whiten=True)]
            for transform in transform_lst:
                transform.fit_transform(data_target["X"])
        else:
            transform_lst = None

        if self.score_paras is None:
            self.score_paras = {}
        scorer = Scorer(
            comp_minDCF=False,
            enroll=enroll_embedding,
            test=f"{self.project_dir}/tmp/test.h5",
            ndx_file=self.valid_trial_list,
            transforms=transform_lst,
            **self.score_paras,
        )
        eer = scorer.batch_cosine_score()

        with open(f"{self.logger_dir}/validation.log", "a") as f:
            f.write(f"{self.epoch} EER is {eer}\n")
コード例 #2
0
ファイル: run.py プロジェクト: enmwmak/msc-domain-adaptation
        os.mkdir(train_para["project_dir"])
    with open(train_para["project_dir"] + "/models/train_config.yaml",
              "a") as f:
        yaml.dump(train_para, f, default_flow_style=False)
    """
      Calling sequence: Trainer.dist_train() --> 
                        Trainer._dist_train() --> SemiTrainer.train() --> 
                        SemiTrainer._semi_train()
    """
    SemiTrainer(**train_para).dist_train()

if run_mode == "scoring":
    print('Scoring...')
    nclasses = Trainer.get_n_classes(train_para['train_file'],
                                     train_para['min_utts_per_spk'],
                                     train_para['sample_length_range'][1])
    if net_type == 'DenseNet':
        densenet_para = {'n_classes': nclasses, 'mfcc_dim': mfcc_dim}
        model = Model(**densenet_para)
    else:
        model = Model(nclasses, mfcc_dim)
    model.load_state_dict(
        torch.load(f"{PRJ_DIR}/models/model_final")['model_state_dict'])
    model.to(torch.device(torch.cuda.current_device()))

    sequential_extract(model, f"{PRJ_DIR}/h5/mfcc_enroll.h5",
                       score_para['enroll'])
    sequential_extract(model, f"{PRJ_DIR}/h5/mfcc_test.h5", score_para['test'])
    scorer = Scorer(**score_para)
    scorer.batch_cosine_score()