js_distances["JS2"].append(js2) print 'DNN output Jensen-Shannon distance (nJet = [6,7,8] vs. nJet = [4,5]): ' + str( js1) print 'DNN output Jensen-Shannon distance (nJet >= 9 vs. nJet = [6,7,8]): ' + str( js2) ### Save losses and plot l = DRf.evaluate(test_x, [test_y, nJets_binned_test], batch_size=512) losses["L_f - L_r"].append(l[0][None][0]) losses["L_f"].append(l[1][None][0]) losses["L_r"].append(-l[2][None][0]) print("Loss: " + str(losses["L_r"][-1] / lam)) plot_losses(i, losses, lam, num_epochs, 'Losses_adversarial_' + model_name + '_lambda_' + str(lam)) plot_jensenshannon(i, js_distances, lam, num_epochs, 'JS_distance_' + model_name + '_lambda_' + str(lam)) plot_inefficiencies( i, inefficiencies_compressed, inefficiencies_uncompressed, lam, num_epochs, 'Inefficiencies_' + model_name + '_lambda' + str(lam)) roc_aoc = 1 - round(roc_auc_score(test_y, model.predict(test_x)), 4) print 'ROC area over curve: ' + str(roc_aoc) # Save the metrics for the best models to a .csv file if (js1 <= 0.08 and js2 <= 0.08 and sig_uncompressed_ineff <= 0.7 and sig_compressed_ineff <= 0.8 and bkg_uncompressed_ineff <= 0.1): metrics_path = save_path + model_name + '_best_metrics.txt' metrics_to_csv(metrics_path, i + 1, js1, js2, sig_uncompressed_ineff, sig_compressed_ineff, bkg_uncompressed_ineff, roc_aoc)
#///////////////////////# ### Save losses and plot l = DRf.evaluate(test_x, [test_y, nJets_binned_test]) losses["L_f - L_r"].append(l[0][None][0]) losses["L_f"].append(l[1][None][0]) losses["L_r"].append(-l[2][None][0]) print("Loss L_r: " + str(losses["L_r"][-1] / lam)) print("Loss L_f: " + str(losses["L_f"][-1])) print(" ") if (i == num_epochs - 1): plot_losses(i, losses, lam, num_epochs, 'Losses_adversarial_reduced_bkg_lambda' + str(lam)) plot_jensenshannon(i, js_distances, lam, num_epochs, 'JS_distance_reduced_bkg_lambda' + str(lam)) plot_Inefficiencies(i, inefficiencies_Compressed, inefficiencies_Uncompressed, lam, num_epochs, 'Inefficiencies_reduced_bkg_lambda' + str(lam)) save_name = 'susyDNN_adv_model_reduced_bkg_lambda_' + str(lam) + "_" + str( i) model.save(save_path2 + save_name + '.h5') print '- - - - - - -' print ' - second test set roc auc: ', round( roc_auc_score(test_y, model.predict(test_x)), 4) # Check decorrelation for test set bkg_test_x = test_x[test_y == 0].copy() bkg_test_njet_4to5 = bkg_test_x['nJets30Clean'] < 0.1