diff --git a/src/common/TensorUtils.h b/src/common/TensorUtils.h deleted file mode 100644 index 7281f49..0000000 --- a/src/common/TensorUtils.h +++ /dev/null @@ -1,18 +0,0 @@ -#ifndef TENSOR_UTILS_H -#define TENSOR_UTILS_H - -#include -#include - -namespace platform { - template - std::vector tensorToVector(const torch::Tensor& tensor) - { - torch::Tensor contig_tensor = tensor.contiguous(); - auto num_elements = contig_tensor.numel(); - const T* tensor_data = contig_tensor.data_ptr(); - std::vector result(tensor_data, tensor_data + num_elements); - return result; - } -} -#endif diff --git a/src/experimental_clfs/TensorUtils.hpp b/src/common/TensorUtils.hpp similarity index 89% rename from src/experimental_clfs/TensorUtils.hpp rename to src/common/TensorUtils.hpp index 2efdf7d..eb69371 100644 --- a/src/experimental_clfs/TensorUtils.hpp +++ b/src/common/TensorUtils.hpp @@ -5,6 +5,15 @@ namespace platform { class TensorUtils { public: + template + static std::vector tensorToVector(const torch::Tensor& tensor) + { + torch::Tensor contig_tensor = tensor.contiguous(); + auto num_elements = contig_tensor.numel(); + const T* tensor_data = contig_tensor.data_ptr(); + std::vector result(tensor_data, tensor_data + num_elements); + return result; + } static std::vector> to_matrix(const torch::Tensor& X) { // Ensure tensor is contiguous in memory diff --git a/src/experimental_clfs/AdaBoost.cpp b/src/experimental_clfs/AdaBoost.cpp index 563fe34..46db330 100644 --- a/src/experimental_clfs/AdaBoost.cpp +++ b/src/experimental_clfs/AdaBoost.cpp @@ -11,7 +11,7 @@ #include #include #include -#include "TensorUtils.hpp" +#include "common/TensorUtils.hpp" // Conditional debug macro for performance-critical sections #define DEBUG_LOG(condition, ...) \ diff --git a/src/experimental_clfs/AdaBoost.h b/src/experimental_clfs/AdaBoost.h index 1d5c729..6a9f590 100644 --- a/src/experimental_clfs/AdaBoost.h +++ b/src/experimental_clfs/AdaBoost.h @@ -38,7 +38,7 @@ namespace bayesnet { torch::Tensor predict(torch::Tensor& X) override; std::vector predict(std::vector>& X) override; torch::Tensor predict_proba(torch::Tensor& X) override; - std::vector> predict_proba(std::vector>& X); + std::vector> predict_proba(std::vector>& X) override; void setDebug(bool debug) { this->debug = debug; } protected: diff --git a/src/experimental_clfs/DecisionTree.cpp b/src/experimental_clfs/DecisionTree.cpp index 307186a..d13f8cf 100644 --- a/src/experimental_clfs/DecisionTree.cpp +++ b/src/experimental_clfs/DecisionTree.cpp @@ -10,7 +10,7 @@ #include #include #include -#include "TensorUtils.hpp" +#include "common/TensorUtils.hpp" namespace bayesnet { diff --git a/src/experimental_clfs/DecisionTree.h b/src/experimental_clfs/DecisionTree.h index 8a1c337..469d61f 100644 --- a/src/experimental_clfs/DecisionTree.h +++ b/src/experimental_clfs/DecisionTree.h @@ -40,7 +40,7 @@ namespace bayesnet { torch::Tensor predict(torch::Tensor& X) override; std::vector predict(std::vector>& X) override; torch::Tensor predict_proba(torch::Tensor& X) override; - std::vector> predict_proba(std::vector>& X); + std::vector> predict_proba(std::vector>& X) override; // Make predictions for a single sample int predictSample(const torch::Tensor& x) const; diff --git a/src/experimental_clfs/ExpClf.cpp b/src/experimental_clfs/ExpClf.cpp index b54bba5..1f969ca 100644 --- a/src/experimental_clfs/ExpClf.cpp +++ b/src/experimental_clfs/ExpClf.cpp @@ -5,7 +5,7 @@ // *************************************************************** #include "ExpClf.h" -#include "TensorUtils.hpp" +#include "common/TensorUtils.hpp" namespace platform { ExpClf::ExpClf() : semaphore_{ CountingSemaphore::getInstance() }, Boost(false) diff --git a/src/experimental_clfs/ExpEnsemble.cpp b/src/experimental_clfs/ExpEnsemble.cpp index 1c9dd22..7dd24fc 100644 --- a/src/experimental_clfs/ExpEnsemble.cpp +++ b/src/experimental_clfs/ExpEnsemble.cpp @@ -5,7 +5,7 @@ // *************************************************************** #include "ExpEnsemble.h" -#include "TensorUtils.hpp" +#include "common/TensorUtils.hpp" namespace platform { ExpEnsemble::ExpEnsemble() : semaphore_{ CountingSemaphore::getInstance() }, Boost(false) diff --git a/src/experimental_clfs/XA1DE.cpp b/src/experimental_clfs/XA1DE.cpp index ba7dd70..9e64fc7 100644 --- a/src/experimental_clfs/XA1DE.cpp +++ b/src/experimental_clfs/XA1DE.cpp @@ -5,7 +5,7 @@ // *************************************************************** #include "XA1DE.h" -#include "TensorUtils.hpp" +#include "common/TensorUtils.hpp" namespace platform { void XA1DE::trainModel(const torch::Tensor& weights, const bayesnet::Smoothing_t smoothing) diff --git a/src/experimental_clfs/XBAODE.cpp b/src/experimental_clfs/XBAODE.cpp index 9fd29d5..9ec776e 100644 --- a/src/experimental_clfs/XBAODE.cpp +++ b/src/experimental_clfs/XBAODE.cpp @@ -10,7 +10,7 @@ #include #include "XBAODE.h" #include "XSpode.hpp" -#include "TensorUtils.hpp" +#include "common/TensorUtils.hpp" #include namespace platform { diff --git a/src/main/RocAuc.cpp b/src/main/RocAuc.cpp index 200cc6e..ab5d68a 100644 --- a/src/main/RocAuc.cpp +++ b/src/main/RocAuc.cpp @@ -3,7 +3,7 @@ #include #include #include "RocAuc.h" -#include "common/TensorUtils.h" // tensorToVector +#include "common/TensorUtils.hpp" // tensorToVector namespace platform { double RocAuc::compute(const torch::Tensor& y_proba, const torch::Tensor& labels) diff --git a/src/main/Scores.cpp b/src/main/Scores.cpp index 7cc76b5..fa675e1 100644 --- a/src/main/Scores.cpp +++ b/src/main/Scores.cpp @@ -1,6 +1,6 @@ #include #include "Scores.h" -#include "common/TensorUtils.h" // tensorToVector +#include "common/TensorUtils.hpp" // tensorToVector #include "common/Colors.h" namespace platform { Scores::Scores(torch::Tensor& y_test, torch::Tensor& y_proba, int num_classes, std::vector labels) : num_classes(num_classes), labels(labels), y_test(y_test), y_proba(y_proba) @@ -50,7 +50,7 @@ namespace platform { auto nClasses = num_classes; if (num_classes == 2) nClasses = 1; - auto y_testv = tensorToVector(y_test); + auto y_testv = TensorUtils::tensorToVector(y_test); std::vector aucScores(nClasses, 0.0); std::vector> scoresAndLabels; for (size_t classIdx = 0; classIdx < nClasses; ++classIdx) { diff --git a/tests/TestAdaBoost.cpp b/tests/TestAdaBoost.cpp index 81d5673..1b96665 100644 --- a/tests/TestAdaBoost.cpp +++ b/tests/TestAdaBoost.cpp @@ -13,7 +13,7 @@ #include #include "experimental_clfs/AdaBoost.h" #include "experimental_clfs/DecisionTree.h" -#include "experimental_clfs/TensorUtils.hpp" +#include "common/TensorUtils.hpp" #include "TestUtils.h" using namespace bayesnet;