67 enum class MODEL : std::uint8_t {
78#ifdef TTK_ENABLE_TORCH
83 int numberOfComponents,
89 const std::string &architecture,
90 const std::string &activation,
92 bool batchNormalization,
93 double regCoefficient,
96 int preOptimizeEpochs);
109 int execute(std::vector<std::vector<double>> &outputEmbedding,
110 const std::vector<double> &inputMatrix,
114 const int NumberOfComponents;
116 const double LearningRate;
119 const MODEL ModelType;
120 const bool InputIsImages;
121 const std::string Architecture;
122 const std::string Activation;
124 const bool BatchNormalization;
125 const double RegCoefficient;
126 const bool PreOptimize;
127 const int PreOptimizeEpochs;
130 torch::DeviceType device{torch::kCPU};
131 std::unique_ptr<DimensionReductionModel> model{
nullptr};
132 std::unique_ptr<torch::optim::Optimizer> torchOptimizer{
nullptr};
133 std::unique_ptr<TopologicalLoss> topologicalLossContainer{
nullptr};
135 int initializeModel(
int inputSize,
int inputDimension);
136 void initializeOptimizer();
138 void preOptimize(
const torch::Tensor &input,
139 const torch::Tensor &target)
const;
141 void optimize(
const torch::Tensor &input)
const;
142 void optimizeSimple(
const torch::Tensor &input)
const;
144 inline void printLoss(
int epoch,
int maxEpoch,
double loss)
const;