44
55using namespace torch ::indexing;
66
7- ttk::TCDR::TCDR (bool useCUDA,
8- bool deterministic,
9- int seed,
10- int numberOfComponents,
11- int epochs,
12- double learningRate,
13- OPTIMIZER optimizer,
14- REGUL method,
15- MODEL modelType,
16- const std::string &architecture,
17- const std::string &activation,
18- int batchSize,
19- bool batchNormalization,
20- double regCoefficient,
21- bool inputIsImages)
7+ ttk::TopologicallyConstrainedDimensionalityReduction::
8+ TopologicallyConstrainedDimensionalityReduction (
9+ bool useCUDA,
10+ bool deterministic,
11+ int seed,
12+ int numberOfComponents,
13+ int epochs,
14+ double learningRate,
15+ OPTIMIZER optimizer,
16+ REGUL method,
17+ MODEL modelType,
18+ const std::string &architecture,
19+ const std::string &activation,
20+ int batchSize,
21+ bool batchNormalization,
22+ double regCoefficient,
23+ bool inputIsImages)
2224 : NumberOfComponents(numberOfComponents), Epochs(epochs),
2325 LearningRate(learningRate), Optimizer(optimizer), Method(method),
2426 ModelType(modelType), InputIsImages(inputIsImages),
2527 Architecture(architecture), Activation(activation), BatchSize(batchSize),
2628 BatchNormalization(batchNormalization), RegCoefficient(regCoefficient) {
2729 // inherited from Debug: prefix will be printed at the beginning of every msg
28- this ->setDebugMsgPrefix (" TCDR " );
30+ this ->setDebugMsgPrefix (" TopologicallyConstrainedDimensionalityReduction " );
2931
3032 if (torch::cuda::is_available () && useCUDA && !deterministic)
3133 device = torch::kCUDA ;
@@ -40,7 +42,8 @@ ttk::TCDR::TCDR(bool useCUDA,
4042 }
4143}
4244
43- int ttk::TCDR::initializeModel (int inputSize, int inputDimension) {
45+ int ttk::TopologicallyConstrainedDimensionalityReduction::initializeModel (
46+ int inputSize, int inputDimension) {
4447 if ((!InputIsImages && !AutoEncoder::isStringValid (Architecture))
4548 || (InputIsImages
4649 && !ConvolutionalAutoEncoder::isStringValid (Architecture))) {
@@ -66,7 +69,8 @@ int ttk::TCDR::initializeModel(int inputSize, int inputDimension) {
6669 return 0 ;
6770}
6871
69- void ttk::TCDR::initializeOptimizer () {
72+ void ttk::TopologicallyConstrainedDimensionalityReduction::
73+ initializeOptimizer () {
7074 if (Optimizer == OPTIMIZER::ADAM)
7175 torchOptimizer = std::make_unique<torch::optim::Adam>(
7276 model->parameters (), /* lr=*/ LearningRate);
@@ -78,9 +82,10 @@ void ttk::TCDR::initializeOptimizer() {
7882 model->parameters (), /* lr=*/ LearningRate);
7983}
8084
81- int ttk::TCDR::execute (std::vector<std::vector<double >> &outputEmbedding,
82- const std::vector<double > &inputMatrix,
83- size_t n) {
85+ int ttk::TopologicallyConstrainedDimensionalityReduction::execute (
86+ std::vector<std::vector<double >> &outputEmbedding,
87+ const std::vector<double > &inputMatrix,
88+ size_t n) {
8489 Timer tm{};
8590 printMsg (" Initialization" , 0 ., tm.getElapsedTime ());
8691
@@ -145,8 +150,9 @@ int ttk::TCDR::execute(std::vector<std::vector<double>> &outputEmbedding,
145150 return 0 ;
146151}
147152
148- void ttk::TCDR::setLatentInitialization (
149- std::vector<std::vector<double >> const &latentInitialization) {
153+ void ttk::TopologicallyConstrainedDimensionalityReduction::
154+ setLatentInitialization (
155+ std::vector<std::vector<double >> const &latentInitialization) {
150156 std::vector<torch::Tensor> tensors;
151157 for (auto const &column : latentInitialization)
152158 tensors.push_back (torch::from_blob (const_cast <double *>(column.data ()),
@@ -157,7 +163,8 @@ void ttk::TCDR::setLatentInitialization(
157163 latentInitialization_ = torch::stack (tensors).transpose (0 , 1 );
158164}
159165
160- void ttk::TCDR::optimizeSimple (const torch::Tensor &input) const {
166+ void ttk::TopologicallyConstrainedDimensionalityReduction::optimizeSimple (
167+ const torch::Tensor &input) const {
161168 int epoch = 0 ;
162169
163170 auto closure = [&] {
@@ -185,7 +192,8 @@ void ttk::TCDR::optimizeSimple(const torch::Tensor &input) const {
185192 torchOptimizer->step (closure);
186193}
187194
188- void ttk::TCDR::optimize (const torch::Tensor &input) const {
195+ void ttk::TopologicallyConstrainedDimensionalityReduction::optimize (
196+ const torch::Tensor &input) const {
189197 int epoch = 0 ;
190198
191199 auto closure = [&] {
@@ -211,8 +219,8 @@ void ttk::TCDR::optimize(const torch::Tensor &input) const {
211219 torchOptimizer->step (closure);
212220}
213221
214- void ttk::TCDR ::preOptimize (const torch::Tensor &input,
215- const torch::Tensor &target) const {
222+ void ttk::TopologicallyConstrainedDimensionalityReduction ::preOptimize (
223+ const torch::Tensor &input, const torch::Tensor &target) const {
216224 int epoch = 0 ;
217225
218226 auto closure = [&] {
@@ -236,11 +244,12 @@ void ttk::TCDR::preOptimize(const torch::Tensor &input,
236244 torchOptimizer->step (closure);
237245}
238246
239- void ttk::TCDR::printLoss (int epoch, double loss) const {
247+ void ttk::TopologicallyConstrainedDimensionalityReduction::printLoss (
248+ int epoch, double loss) const {
240249 if (epoch % std::max (1 , Epochs / 10 ) == 0 )
241250 printMsg (
242251 " Loss at epoch " + std::to_string (epoch) + " : " + std::to_string (loss),
243252 double (epoch) / Epochs, -1 , -1 , debug::LineMode::REPLACE);
244253}
245254
246- #endif
255+ #endif
0 commit comments