def ADfunc(self): num_samples_t = self.samples.shape[0] t_size = 1156 print('sample_shape:', self.samples.shape[0]) print('num_samples_t', num_samples_t) T_index1 = np.asarray(list(range(2562, 3140))) # test_normal T_index2 = np.asarray(list(range(6872, 7450))) # test_anomaly T_index = np.concatenate((T_index1, T_index2)) # -- only discriminate one batch for one time -- # D_test = np.empty([t_size, self.settings['seq_length'], 1]) DL_test = np.empty([t_size, self.settings['seq_length'], 1]) T_samples = np.empty([ t_size, self.settings['seq_length'], self.settings['num_signals'] ]) L_mb = np.empty([t_size, self.settings['seq_length'], 1]) I_mb = np.empty([t_size, self.settings['seq_length'], 1]) # batch_times = t_size // self.settings['batch_size'] # for batch_idx in range(0, t_size // self.settings['batch_size']): for batch_idx in range(0, t_size): # print('batch_idx:{} # display batch progress model.display_batch_progression(batch_idx, t_size) # start_pos = batch_idx * self.settings['batch_size'] # end_pos = start_pos + self.settings['batch_size'] T_mb = self.samples[T_index[batch_idx], :, :] L_mmb = self.labels[T_index[batch_idx], :, :] I_mmb = self.index[T_index[batch_idx], :, :] para_path = './experiments/parameters/' + self.settings[ 'sub_id'] + '_' + str(self.settings['seq_length']) + '_' + str( self.epoch) + '.npy' D_t, L_t = DR_discriminator.dis_D_model(self.settings, T_mb, para_path) T_samples[batch_idx, :, :] = T_mb D_test[batch_idx, :, :] = D_t DL_test[batch_idx, :, :] = L_t L_mb[batch_idx, :, :] = L_mmb I_mb[batch_idx, :, :] = I_mmb ''' # start_pos = (num_samples_t // self.settings['batch_size']) * self.settings['batch_size'] # end_pos = start_pos + self.settings['batch_size'] # size = samples[start_pos:end_pos, :, :].shape[0] # fill = np.ones([self.settings['batch_size'] - size, samples.shape[1], samples.shape[2]]) # batch = np.concatenate([samples[start_pos:end_pos, :, :], fill], axis=0) para_path = './experiments/parameters/' + self.settings['sub_id'] + '_' + str( self.settings['seq_length']) + '_' + str(self.epoch) + '.npy' D_t, L_t = DR_discriminator.dis_trained_model(self.settings, batch, para_path) L_mmb = self.labels[start_pos:end_pos, :, :] I_mmb = self.index[start_pos:end_pos, :, :] D_test[start_pos:end_pos, :, :] = D_t[:size, :, :] DL_test[start_pos:end_pos, :, :] = L_t[:size, :, :] L_mb[start_pos:end_pos, :, :] = L_mmb I_mb[start_pos:end_pos, :, :] = I_mmb ''' results = np.zeros(5) tao = 0.7 Accu2, Pre2, Rec2, F12, FPR2, D_L2 = DR_discriminator.detection_D_I( D_test, L_mb, I_mb, self.settings['seq_step'], tao) print('seq_length:', self.settings['seq_length']) print( 'Comb-statistic-based-Epoch: {}; tao={:.1}; Accu: {:.4}; Pre: {:.4}; Rec:{:.4}; FPR: {:.4}' .format(self.epoch, tao, Accu2, Pre2, Rec2, FPR2)) results = [Accu2, Pre2, Rec2, F12, FPR2] ''' for i in range(2, 8): tao = 0.1 * i Accu2, Pre2, Rec2, F12 = DR_discriminator.detection_Comb( DL_test, L_mb, I_mb, self.settings['seq_step'], tao) print('seq_length:', self.settings['seq_length']) print('Comb-logits-based-Epoch: {}; tao={:.1}; Accu: {:.4}; Pre: {:.4}; Rec: {:.4}; F1: {:.4}' .format(self.epoch, tao, Accu2, Pre2, Rec2, F12)) results[i - 2, :] = [Accu2, Pre2, Rec2, F12] Accu3, Pre3, Rec3, F13 = DR_discriminator.detection_Comb( D_test, L_mb, I_mb, self.settings['seq_step'], tao) print('seq_length:', self.settings['seq_length']) print('Comb-statistic-based-Epoch: {}; tao={:.1}; Accu: {:.4}; Pre: {:.4}; Rec: {:.4}; F1: {:.4}' .format(self.epoch, tao, Accu3, Pre3, Rec3, F13)) results[i - 2+6, :] = [Accu3, Pre3, Rec3, F13] Accu5, Pre5, Rec5, F15 = DR_discriminator.sample_detection(D_test, L_mb, tao) print('seq_length:', self.settings['seq_length']) print('sample-wise-Epoch: {}; tao={:.1}; Accu: {:.4}; Pre: {:.4}; Rec: {:.4}; F1: {:.4}' .format(self.epoch, tao, Accu5, Pre5, Rec5, F15)) results[i - 2+12, :] = [Accu5, Pre5, Rec5, F15] ''' return results
def ADfunc(self): num_samples_t = self.samples.shape[0] t_size = 500 T_index = np.random.choice(num_samples_t, size=t_size, replace=False) print('sample_shape:', self.samples.shape[0]) print('num_samples_t', num_samples_t) # -- only discriminate one batch for one time -- # D_test = np.empty([t_size, self.settings['seq_length'], 1]) DL_test = np.empty([t_size, self.settings['seq_length'], 1]) GG = np.empty([ t_size, self.settings['seq_length'], self.settings['num_signals'] ]) T_samples = np.empty([ t_size, self.settings['seq_length'], self.settings['num_signals'] ]) L_mb = np.empty([t_size, self.settings['seq_length'], 1]) I_mb = np.empty([t_size, self.settings['seq_length'], 1]) for batch_idx in range(0, t_size): # print('epoch:{}'.format(self.epoch)) # print('batch_idx:{}'.format(batch_idx)) # display batch progress model.display_batch_progression(batch_idx, t_size) T_mb = self.samples[T_index[batch_idx], :, :] L_mmb = self.labels[T_index[batch_idx], :, :] I_mmb = self.index[T_index[batch_idx], :, :] para_path = './experiments/parameters/' + self.settings[ 'sub_id'] + '_' + str(self.settings['seq_length']) + '_' + str( self.epoch) + '.npy' D_t, L_t = DR_discriminator.dis_D_model(self.settings, T_mb, para_path) Gs, Zs, error_per_sample, heuristic_sigma = DR_discriminator.invert( self.settings, T_mb, para_path, g_tolerance=None, e_tolerance=0.1, n_iter=None, max_iter=1000, heuristic_sigma=None) GG[batch_idx, :, :] = Gs T_samples[batch_idx, :, :] = T_mb D_test[batch_idx, :, :] = D_t DL_test[batch_idx, :, :] = L_t L_mb[batch_idx, :, :] = L_mmb I_mb[batch_idx, :, :] = I_mmb # -- use self-defined evaluation functions -- # # -- test different tao values for the detection function -- # results = np.empty([5, 5]) # for i in range(2, 8): # tao = 0.1 * i tao = 0.5 lam = 0.8 Accu1, Pre1, Rec1, F11, FPR1, D_L1 = DR_discriminator.detection_D_I( DL_test, L_mb, I_mb, self.settings['seq_step'], tao) print('seq_length:', self.settings['seq_length']) print( 'D:Comb-logits-based-Epoch: {}; tao={:.1}; Accu: {:.4}; Pre: {:.4}; Rec: {:.4}; F1: {:.4}; FPR: {:.4}' .format(self.epoch, tao, Accu1, Pre1, Rec1, F11, FPR1)) results[0, :] = [Accu1, Pre1, Rec1, F11, FPR1] Accu2, Pre2, Rec2, F12, FPR2, D_L2 = DR_discriminator.detection_D_I( D_test, L_mb, I_mb, self.settings['seq_step'], tao) print('seq_length:', self.settings['seq_length']) print( 'D:Comb-statistic-based-Epoch: {}; tao={:.1}; Accu: {:.4}; Pre: {:.4}; Rec: {:.4}; F1: {:.4}; FPR: {:.4}' .format(self.epoch, tao, Accu2, Pre2, Rec2, F12, FPR2)) results[1, :] = [Accu2, Pre2, Rec2, F12, FPR2] Accu3, Pre3, Rec3, F13, FPR3, D_L3 = DR_discriminator.detection_R_D_I( DL_test, GG, T_samples, L_mb, self.settings['seq_step'], tao, lam) print('seq_length:', self.settings['seq_length']) print( 'RD:Comb-logits_based-Epoch: {}; tao={:.1}; Accu: {:.4}; Pre: {:.4}; Rec: {:.4}; F1: {:.4}; FPR: {:.4}' .format(self.epoch, tao, Accu3, Pre3, Rec3, F13, FPR3)) results[2, :] = [Accu3, Pre3, Rec3, F13, FPR3] Accu4, Pre4, Rec4, F14, FPR4, D_L4 = DR_discriminator.detection_R_D_I( D_test, GG, T_samples, L_mb, self.settings['seq_step'], tao, lam) print('seq_length:', self.settings['seq_length']) print( 'RD:Comb-statistic-based-Epoch: {}; tao={:.1}; Accu: {:.4}; Pre: {:.4}; Rec: {:.4}; F1: {:.4}; FPR: {:.4}' .format(self.epoch, tao, Accu4, Pre4, Rec4, F14, FPR4)) results[3, :] = [Accu4, Pre4, Rec4, F14, FPR4] Accu5, Pre5, Rec5, F15, FPR5, D_L5 = DR_discriminator.detection_R_I( GG, T_samples, L_mb, self.settings['seq_step'], tao) print('seq_length:', self.settings['seq_length']) print( 'G:Comb-sample-based-Epoch: {}; tao={:.1}; Accu: {:.4}; Pre: {:.4}; Rec: {:.4}; F1: {:.4}; FPR: {:.4}' .format(self.epoch, tao, Accu5, Pre5, Rec5, F15, FPR5)) results[4, :] = [Accu5, Pre5, Rec5, F15, FPR5] return results, GG, D_test, DL_test