# Feature extractor CNN CNN_arch = { 'input_dim': wlen, 'fs': fs, 'cnn_N_filt': cnn_N_filt, 'cnn_len_filt': cnn_len_filt, 'cnn_max_pool_len': cnn_max_pool_len, 'cnn_use_laynorm_inp': cnn_use_laynorm_inp, 'cnn_use_batchnorm_inp': cnn_use_batchnorm_inp, 'cnn_use_laynorm': cnn_use_laynorm, 'cnn_use_batchnorm': cnn_use_batchnorm, 'cnn_act': cnn_act, 'cnn_drop': cnn_drop, } CNN_net = CNN(CNN_arch) CNN_net.to(device) DNN1_arch = { 'input_dim': CNN_net.out_dim, 'fc_lay': fc_lay, 'fc_drop': fc_drop, 'fc_use_batchnorm': fc_use_batchnorm, 'fc_use_laynorm': fc_use_laynorm, 'fc_use_laynorm_inp': fc_use_laynorm_inp, 'fc_use_batchnorm_inp': fc_use_batchnorm_inp, 'fc_act': fc_act, } DNN1_net = MLP(DNN1_arch) DNN1_net.to(device)
try: os.stat(output_folder) except: os.mkdir(output_folder) # setting seed torch.manual_seed(seed) np.random.seed(seed) # Loading label dictionary lab_dict = np.load(class_dict_file, allow_pickle=True).item() # 读取模型 checkpoint = torch.load('exp/SincNet_TIMIT/model_raw') CNN_net = CNN({}) CNN_net.load_state_dict(checkpoint['CNN_model_par']) DNN1_net = MLP({}) DNN1_net.load_state_dict(checkpoint['DNN1_model_par']) DNN2_net = MLP({}) DNN2_net.load_state_dict(checkpoint['DNN2_model_par']) eer = 0 for i in range(N_batches): # 将test信号预处理batch TODO data—folder是test数据集 [inp, lab] = create_batches_rnd(batch_size, data_folder, wav_lst_te, snt_te, wlen, lab_dict, 0.2) pout = DNN2_net(DNN1_net(CNN_net(inp))) pred = torch.max(pout, dim=1)[1] # 寻找最大那个就是预测的谁 fpr, tpr, thresholds = roc_curve(lab, pred, pos_label=1)