diff --git a/src/nnue/evaluate_nnue_learner.cpp b/src/nnue/evaluate_nnue_learner.cpp index 7a72ea19..6775707d 100644 --- a/src/nnue/evaluate_nnue_learner.cpp +++ b/src/nnue/evaluate_nnue_learner.cpp @@ -68,6 +68,11 @@ namespace Eval::NNUE { out << std::endl; + out << "Factorizers:\n" + << Features::Factorizer::get_factorizers_string() << std::endl; + + out << std::endl; + assert(feature_transformer); assert(network); diff --git a/src/nnue/trainer/features/factorizer.h b/src/nnue/trainer/features/factorizer.h index 49a2fe26..15ce8022 100644 --- a/src/nnue/trainer/features/factorizer.h +++ b/src/nnue/trainer/features/factorizer.h @@ -13,6 +13,14 @@ namespace Eval::NNUE::Features { template class Factorizer { public: + static constexpr std::string get_name() { + return std::string("No factorizer"); + } + + static constexpr std::string get_factorizers_string() { + return " - " + get_name(); + } + // Get the dimensionality of the learning feature static constexpr IndexType get_dimensions() { return FeatureType::kDimensions; diff --git a/src/nnue/trainer/features/factorizer_feature_set.h b/src/nnue/trainer/features/factorizer_feature_set.h index 032a449b..f5ee3c5c 100644 --- a/src/nnue/trainer/features/factorizer_feature_set.h +++ b/src/nnue/trainer/features/factorizer_feature_set.h @@ -21,6 +21,14 @@ namespace Eval::NNUE::Features { static constexpr IndexType kBaseDimensions = FeatureSet::kDimensions; + static constexpr std::string get_factorizers_string() { + std::string str = " - "; + str += Head::get_name(); + str += '\n'; + str += Tail::get_factorizers_string(); + return str; + } + // Get the dimensionality of the learning feature static constexpr IndexType get_dimensions() { return Head::get_dimensions() + Tail::get_dimensions(); @@ -73,6 +81,14 @@ namespace Eval::NNUE::Features { // number of dimensions of original input features static constexpr IndexType kBaseDimensions = FeatureType::kDimensions; + static constexpr std::string get_name() { + return FeatureType::kName; + } + + static constexpr std::string get_factorizers_string() { + return " - " + get_name(); + } + // Get the dimensionality of the learning feature static constexpr IndexType get_dimensions() { return Factorizer::get_dimensions(); diff --git a/src/nnue/trainer/features/factorizer_half_kp.h b/src/nnue/trainer/features/factorizer_half_kp.h index 152722ac..601ddfa5 100644 --- a/src/nnue/trainer/features/factorizer_half_kp.h +++ b/src/nnue/trainer/features/factorizer_half_kp.h @@ -45,6 +45,14 @@ namespace Eval::NNUE::Features { static_assert(get_array_length(kProperties) == kNumTrainingFeatureTypes, ""); public: + static constexpr std::string get_name() { + return std::string("Factorizer<") + FeatureType::kName + ">"; + } + + static constexpr std::string get_factorizers_string() { + return " - " + get_name(); + } + // Get the dimensionality of the learning feature static constexpr IndexType get_dimensions() { return get_active_dimensions(kProperties);