Skip to content

Commit

Permalink
naive frequency pruning
Browse files Browse the repository at this point in the history
  • Loading branch information
DillonZChen committed Jan 23, 2025
1 parent 5c68993 commit e2e872d
Show file tree
Hide file tree
Showing 4 changed files with 53 additions and 14 deletions.
8 changes: 4 additions & 4 deletions include/feature_generation/features.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -141,11 +141,11 @@ namespace feature_generation {

std::set<int> prune_collapse_layer(int iteration, std::vector<std::vector<int>> &cur_colours);
std::set<int> prune_collapse_layer_x(int iteration,
const std::vector<graph::Graph> &graphs,
std::vector<std::vector<int>> &cur_colours);
const std::vector<graph::Graph> &graphs);
std::set<int> prune_collapse_layer_y(int iteration,
const std::vector<graph::Graph> &graphs,
std::vector<std::vector<int>> &cur_colours);
const std::vector<graph::Graph> &graphs);
std::set<int> prune_collapse_layer_f(int iteration,
const std::vector<graph::Graph> &graphs);
std::set<int> prune_maxsat(std::vector<Embedding> X);
std::set<int> prune_maxsat_x(std::vector<Embedding> X, const int maxsat_iterations);

Expand Down
6 changes: 4 additions & 2 deletions include/feature_generation/pruning_options.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,10 @@ namespace feature_generation {
static const std::string COLLAPSE_ALL;
static const std::string COLLAPSE_ALL_X;
static const std::string COLLAPSE_LAYER;
static const std::string COLLAPSE_LAYER_X;
static const std::string COLLAPSE_LAYER_Y;
static const std::string COLLAPSE_LAYER_X; // bfg2019
static const std::string COLLAPSE_LAYER_Y; // maxsat
static const std::string COLLAPSE_LAYER_F; // frequency count < 1% n_data
static const std::string COLLAPSE_LAYER_YF; // Y then F

static const std::vector<std::string> get_all();
};
Expand Down
45 changes: 39 additions & 6 deletions src/feature_generation/pruning/layer_pruners.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,15 @@ namespace feature_generation {
if (pruning == PruningOptions::COLLAPSE_LAYER) {
to_prune = prune_collapse_layer(iteration, cur_colours);
} else if (pruning == PruningOptions::COLLAPSE_LAYER_X) {
to_prune = prune_collapse_layer_x(iteration, graphs, cur_colours);
to_prune = prune_collapse_layer_x(iteration, graphs);
} else if (pruning == PruningOptions::COLLAPSE_LAYER_Y) {
to_prune = prune_collapse_layer_y(iteration, graphs, cur_colours);
to_prune = prune_collapse_layer_y(iteration, graphs);
} else if (pruning == PruningOptions::COLLAPSE_LAYER_F) {
to_prune = prune_collapse_layer_f(iteration, graphs);
} else if (pruning == PruningOptions::COLLAPSE_LAYER_YF) {
to_prune = prune_collapse_layer_y(iteration, graphs);
std::set<int> to_prune_f = prune_collapse_layer_f(iteration, graphs);
to_prune.insert(to_prune_f.begin(), to_prune_f.end());
} else {
to_prune = std::set<int>();
pruned = false;
Expand Down Expand Up @@ -72,8 +78,7 @@ namespace feature_generation {
}

std::set<int> Features::prune_collapse_layer_x(int iteration,
const std::vector<graph::Graph> &graphs,
std::vector<std::vector<int>> &cur_colours) {
const std::vector<graph::Graph> &graphs) {
int original_iterations = iterations;
iterations = iteration;
collecting = false;
Expand Down Expand Up @@ -112,8 +117,7 @@ namespace feature_generation {
}

std::set<int> Features::prune_collapse_layer_y(int iteration,
const std::vector<graph::Graph> &graphs,
std::vector<std::vector<int>> &cur_colours) {
const std::vector<graph::Graph> &graphs) {
int original_iterations = iterations;
iterations = iteration;
collecting = false;
Expand All @@ -128,4 +132,33 @@ namespace feature_generation {

return to_prune;
}

std::set<int> Features::prune_collapse_layer_f(int iteration,
const std::vector<graph::Graph> &graphs) {
int original_iterations = iterations;
iterations = iteration;
collecting = false;
collected = true;

std::set<int> to_prune;
std::vector<Embedding> X = embed_graphs(graphs);
int N = (int)X.size();
int D = (int)X.at(0).size();
int one_percent = N / 100;
for (int i = 0; i < D; i++) {
int count = 0;
for (int j = 0; j < N; j++) {
count += X.at(j).at(i);
}
if (count <= one_percent) {
to_prune.insert(i);
}
}

collecting = true;
collected = false;
iterations = original_iterations;

return to_prune;
}
} // namespace feature_generation
8 changes: 6 additions & 2 deletions src/feature_generation/pruning_options.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -7,14 +7,18 @@ namespace feature_generation {
const std::string PruningOptions::COLLAPSE_LAYER = "collapse-layer";
const std::string PruningOptions::COLLAPSE_LAYER_X = "collapse-layer-x";
const std::string PruningOptions::COLLAPSE_LAYER_Y = "collapse-layer-y";
const std::string PruningOptions::COLLAPSE_LAYER_F = "collapse-layer-f";
const std::string PruningOptions::COLLAPSE_LAYER_YF = "collapse-layer-yf";
const std::vector<std::string> PruningOptions::get_all() {
return {
NONE,
COLLAPSE_ALL,
// COLLAPSE_ALL,
COLLAPSE_ALL_X,
COLLAPSE_LAYER,
// COLLAPSE_LAYER,
COLLAPSE_LAYER_X,
COLLAPSE_LAYER_Y,
COLLAPSE_LAYER_F,
COLLAPSE_LAYER_YF,
};
}
} // namespace feature_generation

0 comments on commit e2e872d

Please sign in to comment.