#ifndef DISTANCEMODULE__H #define DISTANCEMODULE__H #include <torch/torch.h> #include "Submodule.hpp" #include "MyModule.hpp" #include "LSTM.hpp" #include "GRU.hpp" #include "Concat.hpp" class DistanceModuleImpl : public Submodule { private : torch::nn::Embedding wordEmbeddings{nullptr}; std::shared_ptr<MyModule> myModule{nullptr}; std::vector<int> fromBuffer, fromStack; std::vector<int> toBuffer, toStack; int threshold; int inSize; public : DistanceModuleImpl(std::string name, const std::string & definition); torch::Tensor forward(torch::Tensor input); std::size_t getOutputSize() override; std::size_t getInputSize() override; void addToContext(std::vector<std::vector<long>> & context, const Config & config) override; void registerEmbeddings(std::filesystem::path pretrained) override; }; TORCH_MODULE(DistanceModule); #endif