diff --git a/.clang-uml b/.clang-uml index 2e36a4f..05ff657 100644 --- a/.clang-uml +++ b/.clang-uml @@ -1,4 +1,4 @@ -compilation_database_dir: build_debug +compilation_database_dir: build_Debug output_directory: diagrams diagrams: BayesNet: diff --git a/Makefile b/Makefile index 39cf001..836c853 100644 --- a/Makefile +++ b/Makefile @@ -172,7 +172,7 @@ docdir = "" doc-install: ## Install documentation @echo ">>> Installing documentation..." @if [ "$(docdir)" = "" ]; then \ - echo "docdir parameter has to be set when calling doc-install"; \ + echo "docdir parameter has to be set when calling doc-install, i.e. docdir=../bayesnet_help"; \ exit 1; \ fi @if [ ! -d $(docdir) ]; then \ diff --git a/README.md b/README.md index 195af2d..706d873 100644 --- a/README.md +++ b/README.md @@ -8,6 +8,7 @@ [![Reliability Rating](https://sonarcloud.io/api/project_badges/measure?project=rmontanana_BayesNet&metric=reliability_rating)](https://sonarcloud.io/summary/new_code?id=rmontanana_BayesNet) ![Gitea Last Commit](https://img.shields.io/gitea/last-commit/rmontanana/bayesnet?gitea_url=https://gitea.rmontanana.es:3000&logo=gitea) [![Coverage Badge](https://img.shields.io/badge/Coverage-99,1%25-green)](html/index.html) +[![DOI](https://zenodo.org/badge/667782806.svg)](https://doi.org/10.5281/zenodo.14210344) Bayesian Network Classifiers library diff --git a/diagrams/BayesNet.puml b/diagrams/BayesNet.puml index c6b487b..526aee5 100644 --- a/diagrams/BayesNet.puml +++ b/diagrams/BayesNet.puml @@ -1,36 +1,16 @@ @startuml title clang-uml class diagram model -class "bayesnet::Metrics" as C_0000736965376885623323 -class C_0000736965376885623323 #aliceblue;line:blue;line.dotted;text:blue { -+Metrics() = default : void -+Metrics(const torch::Tensor & samples, const std::vector & features, const std::string & className, const int classNumStates) : void -+Metrics(const std::vector> & vsamples, const std::vector & labels, const std::vector & features, const std::string & className, const int classNumStates) : void -.. -+SelectKBestWeighted(const torch::Tensor & weights, bool ascending = false, unsigned int k = 0) : std::vector -+conditionalEdge(const torch::Tensor & weights) : torch::Tensor -+conditionalEdgeWeights(std::vector & weights) : std::vector -#doCombinations(const std::vector & source) : std::vector > -#entropy(const torch::Tensor & feature, const torch::Tensor & weights) : double -+getScoresKBest() const : std::vector -+maximumSpanningTree(const std::vector & features, const torch::Tensor & weights, const int root) : std::vector> -+mutualInformation(const torch::Tensor & firstFeature, const torch::Tensor & secondFeature, const torch::Tensor & weights) : double -#pop_first(std::vector & v) : T -__ -#className : std::string -#features : std::vector -#samples : torch::Tensor -} -class "bayesnet::Node" as C_0001303524929067080934 -class C_0001303524929067080934 #aliceblue;line:blue;line.dotted;text:blue { +class "bayesnet::Node" as C_0010428199432536647474 +class C_0010428199432536647474 #aliceblue;line:blue;line.dotted;text:blue { +Node(const std::string &) : void .. +addChild(Node *) : void +addParent(Node *) : void +clear() : void -+computeCPT(const torch::Tensor & dataset, const std::vector & features, const double laplaceSmoothing, const torch::Tensor & weights) : void ++computeCPT(const torch::Tensor & dataset, const std::vector & features, const double smoothing, const torch::Tensor & weights) : void +getCPT() : torch::Tensor & +getChildren() : std::vector & -+getFactorValue(std::map &) : float ++getFactorValue(std::map &) : double +getName() const : std::string +getNumStates() const : int +getParents() : std::vector & @@ -41,24 +21,29 @@ class C_0001303524929067080934 #aliceblue;line:blue;line.dotted;text:blue { +setNumStates(int) : void __ } -class "bayesnet::Network" as C_0001186707649890429575 -class C_0001186707649890429575 #aliceblue;line:blue;line.dotted;text:blue { +enum "bayesnet::Smoothing_t" as C_0013393078277439680282 +enum C_0013393078277439680282 { +NONE +ORIGINAL +LAPLACE +CESTNIK +} +class "bayesnet::Network" as C_0009493661199123436603 +class C_0009493661199123436603 #aliceblue;line:blue;line.dotted;text:blue { +Network() : void -+Network(float) : void +Network(const Network &) : void +~Network() = default : void .. +addEdge(const std::string &, const std::string &) : void +addNode(const std::string &) : void +dump_cpt() const : std::string -+fit(const torch::Tensor & samples, const torch::Tensor & weights, const std::vector & featureNames, const std::string & className, const std::map> & states) : void -+fit(const torch::Tensor & X, const torch::Tensor & y, const torch::Tensor & weights, const std::vector & featureNames, const std::string & className, const std::map> & states) : void -+fit(const std::vector> & input_data, const std::vector & labels, const std::vector & weights, const std::vector & featureNames, const std::string & className, const std::map> & states) : void ++fit(const torch::Tensor & samples, const torch::Tensor & weights, const std::vector & featureNames, const std::string & className, const std::map> & states, const Smoothing_t smoothing) : void ++fit(const torch::Tensor & X, const torch::Tensor & y, const torch::Tensor & weights, const std::vector & featureNames, const std::string & className, const std::map> & states, const Smoothing_t smoothing) : void ++fit(const std::vector> & input_data, const std::vector & labels, const std::vector & weights, const std::vector & featureNames, const std::string & className, const std::map> & states, const Smoothing_t smoothing) : void +getClassName() const : std::string +getClassNumStates() const : int +getEdges() const : std::vector> +getFeatures() const : std::vector -+getMaxThreads() const : float +getNodes() : std::map> & +getNumEdges() const : int +getSamples() : torch::Tensor & @@ -76,21 +61,21 @@ class C_0001186707649890429575 #aliceblue;line:blue;line.dotted;text:blue { +version() : std::string __ } -enum "bayesnet::status_t" as C_0000738420730783851375 -enum C_0000738420730783851375 { +enum "bayesnet::status_t" as C_0005907365846270811004 +enum C_0005907365846270811004 { NORMAL WARNING ERROR } -abstract "bayesnet::BaseClassifier" as C_0000327135989451974539 -abstract C_0000327135989451974539 #aliceblue;line:blue;line.dotted;text:blue { +abstract "bayesnet::BaseClassifier" as C_0002617087915615796317 +abstract C_0002617087915615796317 #aliceblue;line:blue;line.dotted;text:blue { +~BaseClassifier() = default : void .. {abstract} +dump_cpt() const = 0 : std::string -{abstract} +fit(torch::Tensor & X, torch::Tensor & y, const std::vector & features, const std::string & className, std::map> & states) = 0 : BaseClassifier & -{abstract} +fit(torch::Tensor & dataset, const std::vector & features, const std::string & className, std::map> & states) = 0 : BaseClassifier & -{abstract} +fit(torch::Tensor & dataset, const std::vector & features, const std::string & className, std::map> & states, const torch::Tensor & weights) = 0 : BaseClassifier & -{abstract} +fit(std::vector> & X, std::vector & y, const std::vector & features, const std::string & className, std::map> & states) = 0 : BaseClassifier & +{abstract} +fit(torch::Tensor & X, torch::Tensor & y, const std::vector & features, const std::string & className, std::map> & states, const Smoothing_t smoothing) = 0 : BaseClassifier & +{abstract} +fit(torch::Tensor & dataset, const std::vector & features, const std::string & className, std::map> & states, const Smoothing_t smoothing) = 0 : BaseClassifier & +{abstract} +fit(torch::Tensor & dataset, const std::vector & features, const std::string & className, std::map> & states, const torch::Tensor & weights, const Smoothing_t smoothing) = 0 : BaseClassifier & +{abstract} +fit(std::vector> & X, std::vector & y, const std::vector & features, const std::string & className, std::map> & states, const Smoothing_t smoothing) = 0 : BaseClassifier & {abstract} +getClassNumStates() const = 0 : int {abstract} +getNotes() const = 0 : std::vector {abstract} +getNumberOfEdges() const = 0 : int @@ -109,12 +94,35 @@ abstract C_0000327135989451974539 #aliceblue;line:blue;line.dotted;text:blue { {abstract} +setHyperparameters(const nlohmann::json & hyperparameters) = 0 : void {abstract} +show() const = 0 : std::vector {abstract} +topological_order() = 0 : std::vector -{abstract} #trainModel(const torch::Tensor & weights) = 0 : void +{abstract} #trainModel(const torch::Tensor & weights, const Smoothing_t smoothing) = 0 : void __ #validHyperparameters : std::vector } -abstract "bayesnet::Classifier" as C_0002043996622900301644 -abstract C_0002043996622900301644 #aliceblue;line:blue;line.dotted;text:blue { +class "bayesnet::Metrics" as C_0005895723015084986588 +class C_0005895723015084986588 #aliceblue;line:blue;line.dotted;text:blue { ++Metrics() = default : void ++Metrics(const torch::Tensor & samples, const std::vector & features, const std::string & className, const int classNumStates) : void ++Metrics(const std::vector> & vsamples, const std::vector & labels, const std::vector & features, const std::string & className, const int classNumStates) : void +.. ++SelectKBestWeighted(const torch::Tensor & weights, bool ascending = false, unsigned int k = 0) : std::vector ++SelectKPairs(const torch::Tensor & weights, std::vector & featuresExcluded, bool ascending = false, unsigned int k = 0) : std::vector> ++conditionalEdge(const torch::Tensor & weights) : torch::Tensor ++conditionalEntropy(const torch::Tensor & firstFeature, const torch::Tensor & secondFeature, const torch::Tensor & labels, const torch::Tensor & weights) : double ++conditionalMutualInformation(const torch::Tensor & firstFeature, const torch::Tensor & secondFeature, const torch::Tensor & labels, const torch::Tensor & weights) : double +#doCombinations(const std::vector & source) : std::vector > ++entropy(const torch::Tensor & feature, const torch::Tensor & weights) : double ++getScoresKBest() const : std::vector ++getScoresKPairs() const : std::vector,double>> ++maximumSpanningTree(const std::vector & features, const torch::Tensor & weights, const int root) : std::vector> ++mutualInformation(const torch::Tensor & firstFeature, const torch::Tensor & secondFeature, const torch::Tensor & weights) : double +#pop_first(std::vector & v) : T +__ +#className : std::string +#features : std::vector +#samples : torch::Tensor +} +abstract "bayesnet::Classifier" as C_0016351972983202413152 +abstract C_0016351972983202413152 #aliceblue;line:blue;line.dotted;text:blue { +Classifier(Network model) : void +~Classifier() = default : void .. @@ -123,10 +131,10 @@ abstract C_0002043996622900301644 #aliceblue;line:blue;line.dotted;text:blue { {abstract} #buildModel(const torch::Tensor & weights) = 0 : void #checkFitParameters() : void +dump_cpt() const : std::string -+fit(torch::Tensor & X, torch::Tensor & y, const std::vector & features, const std::string & className, std::map> & states) : Classifier & -+fit(std::vector> & X, std::vector & y, const std::vector & features, const std::string & className, std::map> & states) : Classifier & -+fit(torch::Tensor & dataset, const std::vector & features, const std::string & className, std::map> & states) : Classifier & -+fit(torch::Tensor & dataset, const std::vector & features, const std::string & className, std::map> & states, const torch::Tensor & weights) : Classifier & ++fit(torch::Tensor & X, torch::Tensor & y, const std::vector & features, const std::string & className, std::map> & states, const Smoothing_t smoothing) : Classifier & ++fit(std::vector> & X, std::vector & y, const std::vector & features, const std::string & className, std::map> & states, const Smoothing_t smoothing) : Classifier & ++fit(torch::Tensor & dataset, const std::vector & features, const std::string & className, std::map> & states, const Smoothing_t smoothing) : Classifier & ++fit(torch::Tensor & dataset, const std::vector & features, const std::string & className, std::map> & states, const torch::Tensor & weights, const Smoothing_t smoothing) : Classifier & +getClassNumStates() const : int +getNotes() const : std::vector +getNumberOfEdges() const : int @@ -143,7 +151,7 @@ abstract C_0002043996622900301644 #aliceblue;line:blue;line.dotted;text:blue { +setHyperparameters(const nlohmann::json & hyperparameters) : void +show() const : std::vector +topological_order() : std::vector -#trainModel(const torch::Tensor & weights) : void +#trainModel(const torch::Tensor & weights, const Smoothing_t smoothing) : void __ #className : std::string #dataset : torch::Tensor @@ -157,8 +165,8 @@ __ #states : std::map> #status : status_t } -class "bayesnet::KDB" as C_0001112865019015250005 -class C_0001112865019015250005 #aliceblue;line:blue;line.dotted;text:blue { +class "bayesnet::KDB" as C_0008902920152122000044 +class C_0008902920152122000044 #aliceblue;line:blue;line.dotted;text:blue { +KDB(int k, float theta = 0.03) : void +~KDB() = default : void .. @@ -167,8 +175,26 @@ class C_0001112865019015250005 #aliceblue;line:blue;line.dotted;text:blue { +setHyperparameters(const nlohmann::json & hyperparameters_) : void __ } -class "bayesnet::TAN" as C_0001760994424884323017 -class C_0001760994424884323017 #aliceblue;line:blue;line.dotted;text:blue { +class "bayesnet::SPODE" as C_0004096182510460307610 +class C_0004096182510460307610 #aliceblue;line:blue;line.dotted;text:blue { ++SPODE(int root) : void ++~SPODE() = default : void +.. +#buildModel(const torch::Tensor & weights) : void ++graph(const std::string & name = "SPODE") const : std::vector +__ +} +class "bayesnet::SPnDE" as C_0016268916386101512883 +class C_0016268916386101512883 #aliceblue;line:blue;line.dotted;text:blue { ++SPnDE(std::vector parents) : void ++~SPnDE() = default : void +.. +#buildModel(const torch::Tensor & weights) : void ++graph(const std::string & name = "SPnDE") const : std::vector +__ +} +class "bayesnet::TAN" as C_0014087955399074584137 +class C_0014087955399074584137 #aliceblue;line:blue;line.dotted;text:blue { +TAN() : void +~TAN() = default : void .. @@ -176,8 +202,8 @@ class C_0001760994424884323017 #aliceblue;line:blue;line.dotted;text:blue { +graph(const std::string & name = "TAN") const : std::vector __ } -class "bayesnet::Proposal" as C_0002219995589162262979 -class C_0002219995589162262979 #aliceblue;line:blue;line.dotted;text:blue { +class "bayesnet::Proposal" as C_0017759964713298103839 +class C_0017759964713298103839 #aliceblue;line:blue;line.dotted;text:blue { +Proposal(torch::Tensor & pDataset, std::vector & features_, std::string & className_) : void +~Proposal() : void .. @@ -190,74 +216,42 @@ __ #discretizers : map #y : torch::Tensor } -class "bayesnet::TANLd" as C_0001668829096702037834 -class C_0001668829096702037834 #aliceblue;line:blue;line.dotted;text:blue { -+TANLd() : void -+~TANLd() = default : void +class "bayesnet::KDBLd" as C_0002756018222998454702 +class C_0002756018222998454702 #aliceblue;line:blue;line.dotted;text:blue { ++KDBLd(int k) : void ++~KDBLd() = default : void .. -+fit(torch::Tensor & X, torch::Tensor & y, const std::vector & features, const std::string & className, std::map> & states) : TANLd & -+graph(const std::string & name = "TAN") const : std::vector ++fit(torch::Tensor & X, torch::Tensor & y, const std::vector & features, const std::string & className, std::map> & states, const Smoothing_t smoothing) : KDBLd & ++graph(const std::string & name = "KDB") const : std::vector +predict(torch::Tensor & X) : torch::Tensor {static} +version() : std::string __ } -abstract "bayesnet::FeatureSelect" as C_0001695326193250580823 -abstract C_0001695326193250580823 #aliceblue;line:blue;line.dotted;text:blue { -+FeatureSelect(const torch::Tensor & samples, const std::vector & features, const std::string & className, const int maxFeatures, const int classNumStates, const torch::Tensor & weights) : void -+~FeatureSelect() : void +class "bayesnet::SPODELd" as C_0010957245114062042836 +class C_0010957245114062042836 #aliceblue;line:blue;line.dotted;text:blue { ++SPODELd(int root) : void ++~SPODELd() = default : void .. -#computeMeritCFS() : double -#computeSuFeatures(const int a, const int b) : double -#computeSuLabels() : void -{abstract} +fit() = 0 : void -+getFeatures() const : std::vector -+getScores() const : std::vector -#initialize() : void -#symmetricalUncertainty(int a, int b) : double -__ -#fitted : bool -#maxFeatures : int -#selectedFeatures : std::vector -#selectedScores : std::vector -#suFeatures : std::map,double> -#suLabels : std::vector -#weights : const torch::Tensor & -} -class "bayesnet::CFS" as C_0000011627355691342494 -class C_0000011627355691342494 #aliceblue;line:blue;line.dotted;text:blue { -+CFS(const torch::Tensor & samples, const std::vector & features, const std::string & className, const int maxFeatures, const int classNumStates, const torch::Tensor & weights) : void -+~CFS() : void -.. -+fit() : void ++commonFit(const std::vector & features, const std::string & className, std::map> & states, const Smoothing_t smoothing) : SPODELd & ++fit(torch::Tensor & X, torch::Tensor & y, const std::vector & features, const std::string & className, std::map> & states, const Smoothing_t smoothing) : SPODELd & ++fit(torch::Tensor & dataset, const std::vector & features, const std::string & className, std::map> & states, const Smoothing_t smoothing) : SPODELd & ++graph(const std::string & name = "SPODELd") const : std::vector ++predict(torch::Tensor & X) : torch::Tensor +{static} +version() : std::string __ } -class "bayesnet::FCBF" as C_0000144682015341746929 -class C_0000144682015341746929 #aliceblue;line:blue;line.dotted;text:blue { -+FCBF(const torch::Tensor & samples, const std::vector & features, const std::string & className, const int maxFeatures, const int classNumStates, const torch::Tensor & weights, const double threshold) : void -+~FCBF() : void +class "bayesnet::TANLd" as C_0013350632773616302678 +class C_0013350632773616302678 #aliceblue;line:blue;line.dotted;text:blue { ++TANLd() : void ++~TANLd() = default : void .. -+fit() : void ++fit(torch::Tensor & X, torch::Tensor & y, const std::vector & features, const std::string & className, std::map> & states, const Smoothing_t smoothing) : TANLd & ++graph(const std::string & name = "TANLd") const : std::vector ++predict(torch::Tensor & X) : torch::Tensor __ } -class "bayesnet::IWSS" as C_0000008268514674428553 -class C_0000008268514674428553 #aliceblue;line:blue;line.dotted;text:blue { -+IWSS(const torch::Tensor & samples, const std::vector & features, const std::string & className, const int maxFeatures, const int classNumStates, const torch::Tensor & weights, const double threshold) : void -+~IWSS() : void -.. -+fit() : void -__ -} -class "bayesnet::SPODE" as C_0000512022813807538451 -class C_0000512022813807538451 #aliceblue;line:blue;line.dotted;text:blue { -+SPODE(int root) : void -+~SPODE() = default : void -.. -#buildModel(const torch::Tensor & weights) : void -+graph(const std::string & name = "SPODE") const : std::vector -__ -} -class "bayesnet::Ensemble" as C_0001985241386355360576 -class C_0001985241386355360576 #aliceblue;line:blue;line.dotted;text:blue { +class "bayesnet::Ensemble" as C_0015881931090842884611 +class C_0015881931090842884611 #aliceblue;line:blue;line.dotted;text:blue { +Ensemble(bool predict_voting = true) : void +~Ensemble() = default : void .. @@ -280,7 +274,7 @@ class C_0001985241386355360576 #aliceblue;line:blue;line.dotted;text:blue { +score(torch::Tensor & X, torch::Tensor & y) : float +show() const : std::vector +topological_order() : std::vector -#trainModel(const torch::Tensor & weights) : void +#trainModel(const torch::Tensor & weights, const Smoothing_t smoothing) : void #voting(torch::Tensor & votes) : torch::Tensor __ #models : std::vector> @@ -288,41 +282,223 @@ __ #predict_voting : bool #significanceModels : std::vector } -class "bayesnet::(anonymous_45089536)" as C_0001186398587753535158 -class C_0001186398587753535158 #aliceblue;line:blue;line.dotted;text:blue { +class "bayesnet::A2DE" as C_0001410789567057647859 +class C_0001410789567057647859 #aliceblue;line:blue;line.dotted;text:blue { ++A2DE(bool predict_voting = false) : void ++~A2DE() : void +.. +#buildModel(const torch::Tensor & weights) : void ++graph(const std::string & title = "A2DE") const : std::vector ++setHyperparameters(const nlohmann::json & hyperparameters) : void +__ +} +class "bayesnet::AODE" as C_0006288892608974306258 +class C_0006288892608974306258 #aliceblue;line:blue;line.dotted;text:blue { ++AODE(bool predict_voting = false) : void ++~AODE() : void +.. +#buildModel(const torch::Tensor & weights) : void ++graph(const std::string & title = "AODE") const : std::vector ++setHyperparameters(const nlohmann::json & hyperparameters) : void +__ +} +abstract "bayesnet::FeatureSelect" as C_0013562609546004646591 +abstract C_0013562609546004646591 #aliceblue;line:blue;line.dotted;text:blue { ++FeatureSelect(const torch::Tensor & samples, const std::vector & features, const std::string & className, const int maxFeatures, const int classNumStates, const torch::Tensor & weights) : void ++~FeatureSelect() : void +.. +#computeMeritCFS() : double +#computeSuFeatures(const int a, const int b) : double +#computeSuLabels() : void +{abstract} +fit() = 0 : void ++getFeatures() const : std::vector ++getScores() const : std::vector +#initialize() : void +#symmetricalUncertainty(int a, int b) : double +__ +#fitted : bool +#maxFeatures : int +#selectedFeatures : std::vector +#selectedScores : std::vector +#suFeatures : std::map,double> +#suLabels : std::vector +#weights : const torch::Tensor & +} +class "bayesnet::(anonymous_60342586)" as C_0005584545181746538542 +class C_0005584545181746538542 #aliceblue;line:blue;line.dotted;text:blue { __ +CFS : std::string +FCBF : std::string +IWSS : std::string } -class "bayesnet::(anonymous_45090163)" as C_0000602764946063116717 -class C_0000602764946063116717 #aliceblue;line:blue;line.dotted;text:blue { +class "bayesnet::(anonymous_60343240)" as C_0016227156982041949444 +class C_0016227156982041949444 #aliceblue;line:blue;line.dotted;text:blue { __ +ASC : std::string +DESC : std::string +RAND : std::string } -class "bayesnet::BoostAODE" as C_0000358471592399852382 -class C_0000358471592399852382 #aliceblue;line:blue;line.dotted;text:blue { +class "bayesnet::Boost" as C_0009819322948617116148 +class C_0009819322948617116148 #aliceblue;line:blue;line.dotted;text:blue { ++Boost(bool predict_voting = false) : void ++~Boost() = default : void +.. +#buildModel(const torch::Tensor & weights) : void +#featureSelection(torch::Tensor & weights_) : std::vector ++setHyperparameters(const nlohmann::json & hyperparameters_) : void +#update_weights(torch::Tensor & ytrain, torch::Tensor & ypred, torch::Tensor & weights) : std::tuple +#update_weights_block(int k, torch::Tensor & ytrain, torch::Tensor & weights) : std::tuple +__ +#X_test : torch::Tensor +#X_train : torch::Tensor +#bisection : bool +#block_update : bool +#convergence : bool +#convergence_best : bool +#featureSelector : FeatureSelect * +#maxTolerance : int +#order_algorithm : std::string +#selectFeatures : bool +#select_features_algorithm : std::string +#threshold : double +#y_test : torch::Tensor +#y_train : torch::Tensor +} +class "bayesnet::AODELd" as C_0003898187834670349177 +class C_0003898187834670349177 #aliceblue;line:blue;line.dotted;text:blue { ++AODELd(bool predict_voting = true) : void ++~AODELd() = default : void +.. +#buildModel(const torch::Tensor & weights) : void ++fit(torch::Tensor & X_, torch::Tensor & y_, const std::vector & features_, const std::string & className_, std::map> & states_, const Smoothing_t smoothing) : AODELd & ++graph(const std::string & name = "AODELd") const : std::vector +#trainModel(const torch::Tensor & weights, const Smoothing_t smoothing) : void +__ +} +class "bayesnet::(anonymous_60275628)" as C_0009086919615463763584 +class C_0009086919615463763584 #aliceblue;line:blue;line.dotted;text:blue { +__ ++CFS : std::string ++FCBF : std::string ++IWSS : std::string +} +class "bayesnet::(anonymous_60276282)" as C_0015251985607563196159 +class C_0015251985607563196159 #aliceblue;line:blue;line.dotted;text:blue { +__ ++ASC : std::string ++DESC : std::string ++RAND : std::string +} +class "bayesnet::BoostA2DE" as C_0000272055465257861326 +class C_0000272055465257861326 #aliceblue;line:blue;line.dotted;text:blue { ++BoostA2DE(bool predict_voting = false) : void ++~BoostA2DE() = default : void +.. ++graph(const std::string & title = "BoostA2DE") const : std::vector +#trainModel(const torch::Tensor & weights, const Smoothing_t smoothing) : void +__ +} +class "bayesnet::(anonymous_60275502)" as C_0016033655851510053155 +class C_0016033655851510053155 #aliceblue;line:blue;line.dotted;text:blue { +__ ++CFS : std::string ++FCBF : std::string ++IWSS : std::string +} +class "bayesnet::(anonymous_60276156)" as C_0000379522761622473555 +class C_0000379522761622473555 #aliceblue;line:blue;line.dotted;text:blue { +__ ++ASC : std::string ++DESC : std::string ++RAND : std::string +} +class "bayesnet::BoostAODE" as C_0002867772739198819061 +class C_0002867772739198819061 #aliceblue;line:blue;line.dotted;text:blue { +BoostAODE(bool predict_voting = false) : void +~BoostAODE() = default : void .. -#buildModel(const torch::Tensor & weights) : void +graph(const std::string & title = "BoostAODE") const : std::vector -+setHyperparameters(const nlohmann::json & hyperparameters_) : void -#trainModel(const torch::Tensor & weights) : void +#trainModel(const torch::Tensor & weights, const Smoothing_t smoothing) : void __ } -class "bayesnet::MST" as C_0000131858426172291700 -class C_0000131858426172291700 #aliceblue;line:blue;line.dotted;text:blue { +class "bayesnet::CFS" as C_0000093018845530739957 +class C_0000093018845530739957 #aliceblue;line:blue;line.dotted;text:blue { ++CFS(const torch::Tensor & samples, const std::vector & features, const std::string & className, const int maxFeatures, const int classNumStates, const torch::Tensor & weights) : void ++~CFS() : void +.. ++fit() : void +__ +} +class "bayesnet::FCBF" as C_0001157456122733975432 +class C_0001157456122733975432 #aliceblue;line:blue;line.dotted;text:blue { ++FCBF(const torch::Tensor & samples, const std::vector & features, const std::string & className, const int maxFeatures, const int classNumStates, const torch::Tensor & weights, const double threshold) : void ++~FCBF() : void +.. ++fit() : void +__ +} +class "bayesnet::IWSS" as C_0000066148117395428429 +class C_0000066148117395428429 #aliceblue;line:blue;line.dotted;text:blue { ++IWSS(const torch::Tensor & samples, const std::vector & features, const std::string & className, const int maxFeatures, const int classNumStates, const torch::Tensor & weights, const double threshold) : void ++~IWSS() : void +.. ++fit() : void +__ +} +class "bayesnet::(anonymous_60730495)" as C_0004857727320042830573 +class C_0004857727320042830573 #aliceblue;line:blue;line.dotted;text:blue { +__ ++CFS : std::string ++FCBF : std::string ++IWSS : std::string +} +class "bayesnet::(anonymous_60731150)" as C_0000076541533312623385 +class C_0000076541533312623385 #aliceblue;line:blue;line.dotted;text:blue { +__ ++ASC : std::string ++DESC : std::string ++RAND : std::string +} +class "bayesnet::(anonymous_60653004)" as C_0001444063444142949758 +class C_0001444063444142949758 #aliceblue;line:blue;line.dotted;text:blue { +__ ++CFS : std::string ++FCBF : std::string ++IWSS : std::string +} +class "bayesnet::(anonymous_60653658)" as C_0007139277546931322856 +class C_0007139277546931322856 #aliceblue;line:blue;line.dotted;text:blue { +__ ++ASC : std::string ++DESC : std::string ++RAND : std::string +} +class "bayesnet::(anonymous_60731375)" as C_0010493853592456211189 +class C_0010493853592456211189 #aliceblue;line:blue;line.dotted;text:blue { +__ ++CFS : std::string ++FCBF : std::string ++IWSS : std::string +} +class "bayesnet::(anonymous_60732030)" as C_0007011438637915849564 +class C_0007011438637915849564 #aliceblue;line:blue;line.dotted;text:blue { +__ ++ASC : std::string ++DESC : std::string ++RAND : std::string +} +class "bayesnet::MST" as C_0001054867409378333602 +class C_0001054867409378333602 #aliceblue;line:blue;line.dotted;text:blue { +MST() = default : void +MST(const std::vector & features, const torch::Tensor & weights, const int root) : void .. ++insertElement(std::list & variables, int variable) : void +maximumSpanningTree() : std::vector> ++reorder(std::vector>> T, int root_original) : std::vector> __ } -class "bayesnet::Graph" as C_0001197041682001898467 -class C_0001197041682001898467 #aliceblue;line:blue;line.dotted;text:blue { +class "bayesnet::Graph" as C_0009576333456015187741 +class C_0009576333456015187741 #aliceblue;line:blue;line.dotted;text:blue { +Graph(int V) : void .. +addEdge(int u, int v, float wt) : void @@ -332,81 +508,73 @@ class C_0001197041682001898467 #aliceblue;line:blue;line.dotted;text:blue { +union_set(int u, int v) : void __ } -class "bayesnet::KDBLd" as C_0000344502277874806837 -class C_0000344502277874806837 #aliceblue;line:blue;line.dotted;text:blue { -+KDBLd(int k) : void -+~KDBLd() = default : void -.. -+fit(torch::Tensor & X, torch::Tensor & y, const std::vector & features, const std::string & className, std::map> & states) : KDBLd & -+graph(const std::string & name = "KDB") const : std::vector -+predict(torch::Tensor & X) : torch::Tensor -{static} +version() : std::string -__ -} -class "bayesnet::AODE" as C_0000786111576121788282 -class C_0000786111576121788282 #aliceblue;line:blue;line.dotted;text:blue { -+AODE(bool predict_voting = false) : void -+~AODE() : void -.. -#buildModel(const torch::Tensor & weights) : void -+graph(const std::string & title = "AODE") const : std::vector -+setHyperparameters(const nlohmann::json & hyperparameters) : void -__ -} -class "bayesnet::SPODELd" as C_0001369655639257755354 -class C_0001369655639257755354 #aliceblue;line:blue;line.dotted;text:blue { -+SPODELd(int root) : void -+~SPODELd() = default : void -.. -+commonFit(const std::vector & features, const std::string & className, std::map> & states) : SPODELd & -+fit(torch::Tensor & X, torch::Tensor & y, const std::vector & features, const std::string & className, std::map> & states) : SPODELd & -+fit(torch::Tensor & dataset, const std::vector & features, const std::string & className, std::map> & states) : SPODELd & -+graph(const std::string & name = "SPODE") const : std::vector -+predict(torch::Tensor & X) : torch::Tensor -{static} +version() : std::string -__ -} -class "bayesnet::AODELd" as C_0000487273479333793647 -class C_0000487273479333793647 #aliceblue;line:blue;line.dotted;text:blue { -+AODELd(bool predict_voting = true) : void -+~AODELd() = default : void -.. -#buildModel(const torch::Tensor & weights) : void -+fit(torch::Tensor & X_, torch::Tensor & y_, const std::vector & features_, const std::string & className_, std::map> & states_) : AODELd & -+graph(const std::string & name = "AODELd") const : std::vector -#trainModel(const torch::Tensor & weights) : void -__ -} -C_0001303524929067080934 --> C_0001303524929067080934 : -parents -C_0001303524929067080934 --> C_0001303524929067080934 : -children -C_0001186707649890429575 o-- C_0001303524929067080934 : -nodes -C_0000327135989451974539 ..> C_0000738420730783851375 -C_0002043996622900301644 o-- C_0001186707649890429575 : #model -C_0002043996622900301644 o-- C_0000736965376885623323 : #metrics -C_0002043996622900301644 o-- C_0000738420730783851375 : #status -C_0000327135989451974539 <|-- C_0002043996622900301644 -C_0002043996622900301644 <|-- C_0001112865019015250005 -C_0002043996622900301644 <|-- C_0001760994424884323017 -C_0002219995589162262979 ..> C_0001186707649890429575 -C_0001760994424884323017 <|-- C_0001668829096702037834 -C_0002219995589162262979 <|-- C_0001668829096702037834 -C_0000736965376885623323 <|-- C_0001695326193250580823 -C_0001695326193250580823 <|-- C_0000011627355691342494 -C_0001695326193250580823 <|-- C_0000144682015341746929 -C_0001695326193250580823 <|-- C_0000008268514674428553 -C_0002043996622900301644 <|-- C_0000512022813807538451 -C_0001985241386355360576 o-- C_0002043996622900301644 : #models -C_0002043996622900301644 <|-- C_0001985241386355360576 -C_0000358471592399852382 --> C_0001695326193250580823 : -featureSelector -C_0001985241386355360576 <|-- C_0000358471592399852382 -C_0001112865019015250005 <|-- C_0000344502277874806837 -C_0002219995589162262979 <|-- C_0000344502277874806837 -C_0001985241386355360576 <|-- C_0000786111576121788282 -C_0000512022813807538451 <|-- C_0001369655639257755354 -C_0002219995589162262979 <|-- C_0001369655639257755354 -C_0001985241386355360576 <|-- C_0000487273479333793647 -C_0002219995589162262979 <|-- C_0000487273479333793647 +C_0010428199432536647474 --> C_0010428199432536647474 : -parents +C_0010428199432536647474 --> C_0010428199432536647474 : -children +C_0009493661199123436603 ..> C_0013393078277439680282 +C_0009493661199123436603 o-- C_0010428199432536647474 : -nodes +C_0002617087915615796317 ..> C_0013393078277439680282 +C_0002617087915615796317 ..> C_0005907365846270811004 +C_0016351972983202413152 ..> C_0013393078277439680282 +C_0016351972983202413152 o-- C_0009493661199123436603 : #model +C_0016351972983202413152 o-- C_0005895723015084986588 : #metrics +C_0016351972983202413152 o-- C_0005907365846270811004 : #status +C_0002617087915615796317 <|-- C_0016351972983202413152 -'Generated with clang-uml, version 0.5.1 -'LLVM version clang version 17.0.6 (Fedora 17.0.6-2.fc39) +C_0016351972983202413152 <|-- C_0008902920152122000044 + +C_0016351972983202413152 <|-- C_0004096182510460307610 + +C_0016351972983202413152 <|-- C_0016268916386101512883 + +C_0016351972983202413152 <|-- C_0014087955399074584137 + +C_0017759964713298103839 ..> C_0009493661199123436603 +C_0002756018222998454702 ..> C_0013393078277439680282 +C_0008902920152122000044 <|-- C_0002756018222998454702 + +C_0017759964713298103839 <|-- C_0002756018222998454702 + +C_0010957245114062042836 ..> C_0013393078277439680282 +C_0004096182510460307610 <|-- C_0010957245114062042836 + +C_0017759964713298103839 <|-- C_0010957245114062042836 + +C_0013350632773616302678 ..> C_0013393078277439680282 +C_0014087955399074584137 <|-- C_0013350632773616302678 + +C_0017759964713298103839 <|-- C_0013350632773616302678 + +C_0015881931090842884611 ..> C_0013393078277439680282 +C_0015881931090842884611 o-- C_0016351972983202413152 : #models +C_0016351972983202413152 <|-- C_0015881931090842884611 + +C_0015881931090842884611 <|-- C_0001410789567057647859 + +C_0015881931090842884611 <|-- C_0006288892608974306258 + +C_0005895723015084986588 <|-- C_0013562609546004646591 + +C_0009819322948617116148 --> C_0013562609546004646591 : #featureSelector +C_0015881931090842884611 <|-- C_0009819322948617116148 + +C_0003898187834670349177 ..> C_0013393078277439680282 +C_0015881931090842884611 <|-- C_0003898187834670349177 + +C_0017759964713298103839 <|-- C_0003898187834670349177 + +C_0000272055465257861326 ..> C_0013393078277439680282 +C_0009819322948617116148 <|-- C_0000272055465257861326 + +C_0002867772739198819061 ..> C_0013393078277439680282 +C_0009819322948617116148 <|-- C_0002867772739198819061 + +C_0013562609546004646591 <|-- C_0000093018845530739957 + +C_0013562609546004646591 <|-- C_0001157456122733975432 + +C_0013562609546004646591 <|-- C_0000066148117395428429 + + +'Generated with clang-uml, version 0.5.5 +'LLVM version clang version 18.1.8 (Fedora 18.1.8-5.fc41) @enduml diff --git a/diagrams/BayesNet.svg b/diagrams/BayesNet.svg index a3bda9c..0bbe9b2 100644 --- a/diagrams/BayesNet.svg +++ b/diagrams/BayesNet.svg @@ -1 +1 @@ -clang-uml class diagram modelbayesnet::MetricsMetrics() = default : voidMetrics(const torch::Tensor & samples, const std::vector<std::string> & features, const std::string & className, const int classNumStates) : voidMetrics(const std::vector<std::vector<int>> & vsamples, const std::vector<int> & labels, const std::vector<std::string> & features, const std::string & className, const int classNumStates) : voidSelectKBestWeighted(const torch::Tensor & weights, bool ascending = false, unsigned int k = 0) : std::vector<int>conditionalEdge(const torch::Tensor & weights) : torch::TensorconditionalEdgeWeights(std::vector<float> & weights) : std::vector<float>doCombinations<T>(const std::vector<T> & source) : std::vector<std::pair<T, T> >entropy(const torch::Tensor & feature, const torch::Tensor & weights) : doublegetScoresKBest() const : std::vector<double>maximumSpanningTree(const std::vector<std::string> & features, const torch::Tensor & weights, const int root) : std::vector<std::pair<int,int>>mutualInformation(const torch::Tensor & firstFeature, const torch::Tensor & secondFeature, const torch::Tensor & weights) : doublepop_first<T>(std::vector<T> & v) : TclassName : std::stringfeatures : std::vector<std::string>samples : torch::Tensorbayesnet::NodeNode(const std::string &) : voidaddChild(Node *) : voidaddParent(Node *) : voidclear() : voidcomputeCPT(const torch::Tensor & dataset, const std::vector<std::string> & features, const double laplaceSmoothing, const torch::Tensor & weights) : voidgetCPT() : torch::Tensor &getChildren() : std::vector<Node *> &getFactorValue(std::map<std::string,int> &) : floatgetName() const : std::stringgetNumStates() const : intgetParents() : std::vector<Node *> &graph(const std::string & clasName) : std::vector<std::string>minFill() : unsigned intremoveChild(Node *) : voidremoveParent(Node *) : voidsetNumStates(int) : voidbayesnet::NetworkNetwork() : voidNetwork(float) : voidNetwork(const Network &) : void~Network() = default : voidaddEdge(const std::string &, const std::string &) : voidaddNode(const std::string &) : voiddump_cpt() const : std::stringfit(const torch::Tensor & samples, const torch::Tensor & weights, const std::vector<std::string> & featureNames, const std::string & className, const std::map<std::string,std::vector<int>> & states) : voidfit(const torch::Tensor & X, const torch::Tensor & y, const torch::Tensor & weights, const std::vector<std::string> & featureNames, const std::string & className, const std::map<std::string,std::vector<int>> & states) : voidfit(const std::vector<std::vector<int>> & input_data, const std::vector<int> & labels, const std::vector<double> & weights, const std::vector<std::string> & featureNames, const std::string & className, const std::map<std::string,std::vector<int>> & states) : voidgetClassName() const : std::stringgetClassNumStates() const : intgetEdges() const : std::vector<std::pair<std::string,std::string>>getFeatures() const : std::vector<std::string>getMaxThreads() const : floatgetNodes() : std::map<std::string,std::unique_ptr<Node>> &getNumEdges() const : intgetSamples() : torch::Tensor &getStates() const : intgraph(const std::string & title) const : std::vector<std::string>initialize() : voidpredict(const std::vector<std::vector<int>> &) : std::vector<int>predict(const torch::Tensor &) : torch::Tensorpredict_proba(const std::vector<std::vector<int>> &) : std::vector<std::vector<double>>predict_proba(const torch::Tensor &) : torch::Tensorpredict_tensor(const torch::Tensor & samples, const bool proba) : torch::Tensorscore(const std::vector<std::vector<int>> &, const std::vector<int> &) : doubleshow() const : std::vector<std::string>topological_sort() : std::vector<std::string>version() : std::stringbayesnet::status_tNORMALWARNINGERRORbayesnet::BaseClassifier~BaseClassifier() = default : voiddump_cpt() const = 0 : std::stringfit(torch::Tensor & X, torch::Tensor & y, const std::vector<std::string> & features, const std::string & className, std::map<std::string,std::vector<int>> & states) = 0 : BaseClassifier &fit(torch::Tensor & dataset, const std::vector<std::string> & features, const std::string & className, std::map<std::string,std::vector<int>> & states) = 0 : BaseClassifier &fit(torch::Tensor & dataset, const std::vector<std::string> & features, const std::string & className, std::map<std::string,std::vector<int>> & states, const torch::Tensor & weights) = 0 : BaseClassifier &fit(std::vector<std::vector<int>> & X, std::vector<int> & y, const std::vector<std::string> & features, const std::string & className, std::map<std::string,std::vector<int>> & states) = 0 : BaseClassifier &getClassNumStates() const = 0 : intgetNotes() const = 0 : std::vector<std::string>getNumberOfEdges() const = 0 : intgetNumberOfNodes() const = 0 : intgetNumberOfStates() const = 0 : intgetStatus() const = 0 : status_tgetValidHyperparameters() : std::vector<std::string> &getVersion() = 0 : std::stringgraph(const std::string & title = "") const = 0 : std::vector<std::string>predict(std::vector<std::vector<int>> & X) = 0 : std::vector<int>predict(torch::Tensor & X) = 0 : torch::Tensorpredict_proba(std::vector<std::vector<int>> & X) = 0 : std::vector<std::vector<double>>predict_proba(torch::Tensor & X) = 0 : torch::Tensorscore(std::vector<std::vector<int>> & X, std::vector<int> & y) = 0 : floatscore(torch::Tensor & X, torch::Tensor & y) = 0 : floatsetHyperparameters(const nlohmann::json & hyperparameters) = 0 : voidshow() const = 0 : std::vector<std::string>topological_order() = 0 : std::vector<std::string>trainModel(const torch::Tensor & weights) = 0 : voidvalidHyperparameters : std::vector<std::string>bayesnet::ClassifierClassifier(Network model) : void~Classifier() = default : voidaddNodes() : voidbuildDataset(torch::Tensor & y) : voidbuildModel(const torch::Tensor & weights) = 0 : voidcheckFitParameters() : voiddump_cpt() const : std::stringfit(torch::Tensor & X, torch::Tensor & y, const std::vector<std::string> & features, const std::string & className, std::map<std::string,std::vector<int>> & states) : Classifier &fit(std::vector<std::vector<int>> & X, std::vector<int> & y, const std::vector<std::string> & features, const std::string & className, std::map<std::string,std::vector<int>> & states) : Classifier &fit(torch::Tensor & dataset, const std::vector<std::string> & features, const std::string & className, std::map<std::string,std::vector<int>> & states) : Classifier &fit(torch::Tensor & dataset, const std::vector<std::string> & features, const std::string & className, std::map<std::string,std::vector<int>> & states, const torch::Tensor & weights) : Classifier &getClassNumStates() const : intgetNotes() const : std::vector<std::string>getNumberOfEdges() const : intgetNumberOfNodes() const : intgetNumberOfStates() const : intgetStatus() const : status_tgetVersion() : std::stringpredict(std::vector<std::vector<int>> & X) : std::vector<int>predict(torch::Tensor & X) : torch::Tensorpredict_proba(std::vector<std::vector<int>> & X) : std::vector<std::vector<double>>predict_proba(torch::Tensor & X) : torch::Tensorscore(torch::Tensor & X, torch::Tensor & y) : floatscore(std::vector<std::vector<int>> & X, std::vector<int> & y) : floatsetHyperparameters(const nlohmann::json & hyperparameters) : voidshow() const : std::vector<std::string>topological_order() : std::vector<std::string>trainModel(const torch::Tensor & weights) : voidclassName : std::stringdataset : torch::Tensorfeatures : std::vector<std::string>fitted : boolm : unsigned intmetrics : Metricsmodel : Networkn : unsigned intnotes : std::vector<std::string>states : std::map<std::string,std::vector<int>>status : status_tbayesnet::KDBKDB(int k, float theta = 0.03) : void~KDB() = default : voidbuildModel(const torch::Tensor & weights) : voidgraph(const std::string & name = "KDB") const : std::vector<std::string>setHyperparameters(const nlohmann::json & hyperparameters_) : voidbayesnet::TANTAN() : void~TAN() = default : voidbuildModel(const torch::Tensor & weights) : voidgraph(const std::string & name = "TAN") const : std::vector<std::string>bayesnet::ProposalProposal(torch::Tensor & pDataset, std::vector<std::string> & features_, std::string & className_) : void~Proposal() : voidcheckInput(const torch::Tensor & X, const torch::Tensor & y) : voidfit_local_discretization(const torch::Tensor & y) : std::map<std::string,std::vector<int>>localDiscretizationProposal(const std::map<std::string,std::vector<int>> & states, Network & model) : std::map<std::string,std::vector<int>>prepareX(torch::Tensor & X) : torch::TensorXf : torch::Tensordiscretizers : map<std::string,mdlp::CPPFImdlp *>y : torch::Tensorbayesnet::TANLdTANLd() : void~TANLd() = default : voidfit(torch::Tensor & X, torch::Tensor & y, const std::vector<std::string> & features, const std::string & className, std::map<std::string,std::vector<int>> & states) : TANLd &graph(const std::string & name = "TAN") const : std::vector<std::string>predict(torch::Tensor & X) : torch::Tensorversion() : std::stringbayesnet::FeatureSelectFeatureSelect(const torch::Tensor & samples, const std::vector<std::string> & features, const std::string & className, const int maxFeatures, const int classNumStates, const torch::Tensor & weights) : void~FeatureSelect() : voidcomputeMeritCFS() : doublecomputeSuFeatures(const int a, const int b) : doublecomputeSuLabels() : voidfit() = 0 : voidgetFeatures() const : std::vector<int>getScores() const : std::vector<double>initialize() : voidsymmetricalUncertainty(int a, int b) : doublefitted : boolmaxFeatures : intselectedFeatures : std::vector<int>selectedScores : std::vector<double>suFeatures : std::map<std::pair<int,int>,double>suLabels : std::vector<double>weights : const torch::Tensor &bayesnet::CFSCFS(const torch::Tensor & samples, const std::vector<std::string> & features, const std::string & className, const int maxFeatures, const int classNumStates, const torch::Tensor & weights) : void~CFS() : voidfit() : voidbayesnet::FCBFFCBF(const torch::Tensor & samples, const std::vector<std::string> & features, const std::string & className, const int maxFeatures, const int classNumStates, const torch::Tensor & weights, const double threshold) : void~FCBF() : voidfit() : voidbayesnet::IWSSIWSS(const torch::Tensor & samples, const std::vector<std::string> & features, const std::string & className, const int maxFeatures, const int classNumStates, const torch::Tensor & weights, const double threshold) : void~IWSS() : voidfit() : voidbayesnet::SPODESPODE(int root) : void~SPODE() = default : voidbuildModel(const torch::Tensor & weights) : voidgraph(const std::string & name = "SPODE") const : std::vector<std::string>bayesnet::EnsembleEnsemble(bool predict_voting = true) : void~Ensemble() = default : voidcompute_arg_max(std::vector<std::vector<double>> & X) : std::vector<int>compute_arg_max(torch::Tensor & X) : torch::Tensordump_cpt() const : std::stringgetNumberOfEdges() const : intgetNumberOfNodes() const : intgetNumberOfStates() const : intgraph(const std::string & title) const : std::vector<std::string>predict(std::vector<std::vector<int>> & X) : std::vector<int>predict(torch::Tensor & X) : torch::Tensorpredict_average_proba(torch::Tensor & X) : torch::Tensorpredict_average_proba(std::vector<std::vector<int>> & X) : std::vector<std::vector<double>>predict_average_voting(torch::Tensor & X) : torch::Tensorpredict_average_voting(std::vector<std::vector<int>> & X) : std::vector<std::vector<double>>predict_proba(std::vector<std::vector<int>> & X) : std::vector<std::vector<double>>predict_proba(torch::Tensor & X) : torch::Tensorscore(std::vector<std::vector<int>> & X, std::vector<int> & y) : floatscore(torch::Tensor & X, torch::Tensor & y) : floatshow() const : std::vector<std::string>topological_order() : std::vector<std::string>trainModel(const torch::Tensor & weights) : voidvoting(torch::Tensor & votes) : torch::Tensormodels : std::vector<std::unique_ptr<Classifier>>n_models : unsigned intpredict_voting : boolsignificanceModels : std::vector<double>bayesnet::(anonymous_45089536)CFS : std::stringFCBF : std::stringIWSS : std::stringbayesnet::(anonymous_45090163)ASC : std::stringDESC : std::stringRAND : std::stringbayesnet::BoostAODEBoostAODE(bool predict_voting = false) : void~BoostAODE() = default : voidbuildModel(const torch::Tensor & weights) : voidgraph(const std::string & title = "BoostAODE") const : std::vector<std::string>setHyperparameters(const nlohmann::json & hyperparameters_) : voidtrainModel(const torch::Tensor & weights) : voidbayesnet::MSTMST() = default : voidMST(const std::vector<std::string> & features, const torch::Tensor & weights, const int root) : voidmaximumSpanningTree() : std::vector<std::pair<int,int>>bayesnet::GraphGraph(int V) : voidaddEdge(int u, int v, float wt) : voidfind_set(int i) : intget_mst() : std::vector<std::pair<float,std::pair<int,int>>>kruskal_algorithm() : voidunion_set(int u, int v) : voidbayesnet::KDBLdKDBLd(int k) : void~KDBLd() = default : voidfit(torch::Tensor & X, torch::Tensor & y, const std::vector<std::string> & features, const std::string & className, std::map<std::string,std::vector<int>> & states) : KDBLd &graph(const std::string & name = "KDB") const : std::vector<std::string>predict(torch::Tensor & X) : torch::Tensorversion() : std::stringbayesnet::AODEAODE(bool predict_voting = false) : void~AODE() : voidbuildModel(const torch::Tensor & weights) : voidgraph(const std::string & title = "AODE") const : std::vector<std::string>setHyperparameters(const nlohmann::json & hyperparameters) : voidbayesnet::SPODELdSPODELd(int root) : void~SPODELd() = default : voidcommonFit(const std::vector<std::string> & features, const std::string & className, std::map<std::string,std::vector<int>> & states) : SPODELd &fit(torch::Tensor & X, torch::Tensor & y, const std::vector<std::string> & features, const std::string & className, std::map<std::string,std::vector<int>> & states) : SPODELd &fit(torch::Tensor & dataset, const std::vector<std::string> & features, const std::string & className, std::map<std::string,std::vector<int>> & states) : SPODELd &graph(const std::string & name = "SPODE") const : std::vector<std::string>predict(torch::Tensor & X) : torch::Tensorversion() : std::stringbayesnet::AODELdAODELd(bool predict_voting = true) : void~AODELd() = default : voidbuildModel(const torch::Tensor & weights) : voidfit(torch::Tensor & X_, torch::Tensor & y_, const std::vector<std::string> & features_, const std::string & className_, std::map<std::string,std::vector<int>> & states_) : AODELd &graph(const std::string & name = "AODELd") const : std::vector<std::string>trainModel(const torch::Tensor & weights) : voidparentschildrennodesmodelmetricsstatusmodelsfeatureSelector \ No newline at end of file +clang-uml class diagram modelclang-uml class diagram modelbayesnet::NodeNode(const std::string &) : voidaddChild(Node *) : voidaddParent(Node *) : voidclear() : voidcomputeCPT(const torch::Tensor & dataset, const std::vector<std::string> & features, const double smoothing, const torch::Tensor & weights) : voidgetCPT() : torch::Tensor &getChildren() : std::vector<Node *> &getFactorValue(std::map<std::string,int> &) : doublegetName() const : std::stringgetNumStates() const : intgetParents() : std::vector<Node *> &graph(const std::string & clasName) : std::vector<std::string>minFill() : unsigned intremoveChild(Node *) : voidremoveParent(Node *) : voidsetNumStates(int) : voidbayesnet::Smoothing_tNONEORIGINALLAPLACECESTNIKbayesnet::NetworkNetwork() : voidNetwork(const Network &) : void~Network() = default : voidaddEdge(const std::string &, const std::string &) : voidaddNode(const std::string &) : voiddump_cpt() const : std::stringfit(const torch::Tensor & samples, const torch::Tensor & weights, const std::vector<std::string> & featureNames, const std::string & className, const std::map<std::string,std::vector<int>> & states, const Smoothing_t smoothing) : voidfit(const torch::Tensor & X, const torch::Tensor & y, const torch::Tensor & weights, const std::vector<std::string> & featureNames, const std::string & className, const std::map<std::string,std::vector<int>> & states, const Smoothing_t smoothing) : voidfit(const std::vector<std::vector<int>> & input_data, const std::vector<int> & labels, const std::vector<double> & weights, const std::vector<std::string> & featureNames, const std::string & className, const std::map<std::string,std::vector<int>> & states, const Smoothing_t smoothing) : voidgetClassName() const : std::stringgetClassNumStates() const : intgetEdges() const : std::vector<std::pair<std::string,std::string>>getFeatures() const : std::vector<std::string>getNodes() : std::map<std::string,std::unique_ptr<Node>> &getNumEdges() const : intgetSamples() : torch::Tensor &getStates() const : intgraph(const std::string & title) const : std::vector<std::string>initialize() : voidpredict(const std::vector<std::vector<int>> &) : std::vector<int>predict(const torch::Tensor &) : torch::Tensorpredict_proba(const std::vector<std::vector<int>> &) : std::vector<std::vector<double>>predict_proba(const torch::Tensor &) : torch::Tensorpredict_tensor(const torch::Tensor & samples, const bool proba) : torch::Tensorscore(const std::vector<std::vector<int>> &, const std::vector<int> &) : doubleshow() const : std::vector<std::string>topological_sort() : std::vector<std::string>version() : std::stringbayesnet::status_tNORMALWARNINGERRORbayesnet::BaseClassifier~BaseClassifier() = default : voiddump_cpt() const = 0 : std::stringfit(torch::Tensor & X, torch::Tensor & y, const std::vector<std::string> & features, const std::string & className, std::map<std::string,std::vector<int>> & states, const Smoothing_t smoothing) = 0 : BaseClassifier &fit(torch::Tensor & dataset, const std::vector<std::string> & features, const std::string & className, std::map<std::string,std::vector<int>> & states, const Smoothing_t smoothing) = 0 : BaseClassifier &fit(torch::Tensor & dataset, const std::vector<std::string> & features, const std::string & className, std::map<std::string,std::vector<int>> & states, const torch::Tensor & weights, const Smoothing_t smoothing) = 0 : BaseClassifier &fit(std::vector<std::vector<int>> & X, std::vector<int> & y, const std::vector<std::string> & features, const std::string & className, std::map<std::string,std::vector<int>> & states, const Smoothing_t smoothing) = 0 : BaseClassifier &getClassNumStates() const = 0 : intgetNotes() const = 0 : std::vector<std::string>getNumberOfEdges() const = 0 : intgetNumberOfNodes() const = 0 : intgetNumberOfStates() const = 0 : intgetStatus() const = 0 : status_tgetValidHyperparameters() : std::vector<std::string> &getVersion() = 0 : std::stringgraph(const std::string & title = "") const = 0 : std::vector<std::string>predict(std::vector<std::vector<int>> & X) = 0 : std::vector<int>predict(torch::Tensor & X) = 0 : torch::Tensorpredict_proba(std::vector<std::vector<int>> & X) = 0 : std::vector<std::vector<double>>predict_proba(torch::Tensor & X) = 0 : torch::Tensorscore(std::vector<std::vector<int>> & X, std::vector<int> & y) = 0 : floatscore(torch::Tensor & X, torch::Tensor & y) = 0 : floatsetHyperparameters(const nlohmann::json & hyperparameters) = 0 : voidshow() const = 0 : std::vector<std::string>topological_order() = 0 : std::vector<std::string>trainModel(const torch::Tensor & weights, const Smoothing_t smoothing) = 0 : voidvalidHyperparameters : std::vector<std::string>bayesnet::MetricsMetrics() = default : voidMetrics(const torch::Tensor & samples, const std::vector<std::string> & features, const std::string & className, const int classNumStates) : voidMetrics(const std::vector<std::vector<int>> & vsamples, const std::vector<int> & labels, const std::vector<std::string> & features, const std::string & className, const int classNumStates) : voidSelectKBestWeighted(const torch::Tensor & weights, bool ascending = false, unsigned int k = 0) : std::vector<int>SelectKPairs(const torch::Tensor & weights, std::vector<int> & featuresExcluded, bool ascending = false, unsigned int k = 0) : std::vector<std::pair<int,int>>conditionalEdge(const torch::Tensor & weights) : torch::TensorconditionalEntropy(const torch::Tensor & firstFeature, const torch::Tensor & secondFeature, const torch::Tensor & labels, const torch::Tensor & weights) : doubleconditionalMutualInformation(const torch::Tensor & firstFeature, const torch::Tensor & secondFeature, const torch::Tensor & labels, const torch::Tensor & weights) : doubledoCombinations<T>(const std::vector<T> & source) : std::vector<std::pair<T, T> >entropy(const torch::Tensor & feature, const torch::Tensor & weights) : doublegetScoresKBest() const : std::vector<double>getScoresKPairs() const : std::vector<std::pair<std::pair<int,int>,double>>maximumSpanningTree(const std::vector<std::string> & features, const torch::Tensor & weights, const int root) : std::vector<std::pair<int,int>>mutualInformation(const torch::Tensor & firstFeature, const torch::Tensor & secondFeature, const torch::Tensor & weights) : doublepop_first<T>(std::vector<T> & v) : TclassName : std::stringfeatures : std::vector<std::string>samples : torch::Tensorbayesnet::ClassifierClassifier(Network model) : void~Classifier() = default : voidaddNodes() : voidbuildDataset(torch::Tensor & y) : voidbuildModel(const torch::Tensor & weights) = 0 : voidcheckFitParameters() : voiddump_cpt() const : std::stringfit(torch::Tensor & X, torch::Tensor & y, const std::vector<std::string> & features, const std::string & className, std::map<std::string,std::vector<int>> & states, const Smoothing_t smoothing) : Classifier &fit(std::vector<std::vector<int>> & X, std::vector<int> & y, const std::vector<std::string> & features, const std::string & className, std::map<std::string,std::vector<int>> & states, const Smoothing_t smoothing) : Classifier &fit(torch::Tensor & dataset, const std::vector<std::string> & features, const std::string & className, std::map<std::string,std::vector<int>> & states, const Smoothing_t smoothing) : Classifier &fit(torch::Tensor & dataset, const std::vector<std::string> & features, const std::string & className, std::map<std::string,std::vector<int>> & states, const torch::Tensor & weights, const Smoothing_t smoothing) : Classifier &getClassNumStates() const : intgetNotes() const : std::vector<std::string>getNumberOfEdges() const : intgetNumberOfNodes() const : intgetNumberOfStates() const : intgetStatus() const : status_tgetVersion() : std::stringpredict(std::vector<std::vector<int>> & X) : std::vector<int>predict(torch::Tensor & X) : torch::Tensorpredict_proba(std::vector<std::vector<int>> & X) : std::vector<std::vector<double>>predict_proba(torch::Tensor & X) : torch::Tensorscore(torch::Tensor & X, torch::Tensor & y) : floatscore(std::vector<std::vector<int>> & X, std::vector<int> & y) : floatsetHyperparameters(const nlohmann::json & hyperparameters) : voidshow() const : std::vector<std::string>topological_order() : std::vector<std::string>trainModel(const torch::Tensor & weights, const Smoothing_t smoothing) : voidclassName : std::stringdataset : torch::Tensorfeatures : std::vector<std::string>fitted : boolm : unsigned intmetrics : Metricsmodel : Networkn : unsigned intnotes : std::vector<std::string>states : std::map<std::string,std::vector<int>>status : status_tbayesnet::KDBKDB(int k, float theta = 0.03) : void~KDB() = default : voidbuildModel(const torch::Tensor & weights) : voidgraph(const std::string & name = "KDB") const : std::vector<std::string>setHyperparameters(const nlohmann::json & hyperparameters_) : voidbayesnet::SPODESPODE(int root) : void~SPODE() = default : voidbuildModel(const torch::Tensor & weights) : voidgraph(const std::string & name = "SPODE") const : std::vector<std::string>bayesnet::SPnDESPnDE(std::vector<int> parents) : void~SPnDE() = default : voidbuildModel(const torch::Tensor & weights) : voidgraph(const std::string & name = "SPnDE") const : std::vector<std::string>bayesnet::TANTAN() : void~TAN() = default : voidbuildModel(const torch::Tensor & weights) : voidgraph(const std::string & name = "TAN") const : std::vector<std::string>bayesnet::ProposalProposal(torch::Tensor & pDataset, std::vector<std::string> & features_, std::string & className_) : void~Proposal() : voidcheckInput(const torch::Tensor & X, const torch::Tensor & y) : voidfit_local_discretization(const torch::Tensor & y) : std::map<std::string,std::vector<int>>localDiscretizationProposal(const std::map<std::string,std::vector<int>> & states, Network & model) : std::map<std::string,std::vector<int>>prepareX(torch::Tensor & X) : torch::TensorXf : torch::Tensordiscretizers : map<std::string,mdlp::CPPFImdlp *>y : torch::Tensorbayesnet::KDBLdKDBLd(int k) : void~KDBLd() = default : voidfit(torch::Tensor & X, torch::Tensor & y, const std::vector<std::string> & features, const std::string & className, std::map<std::string,std::vector<int>> & states, const Smoothing_t smoothing) : KDBLd &graph(const std::string & name = "KDB") const : std::vector<std::string>predict(torch::Tensor & X) : torch::Tensorversion() : std::stringbayesnet::SPODELdSPODELd(int root) : void~SPODELd() = default : voidcommonFit(const std::vector<std::string> & features, const std::string & className, std::map<std::string,std::vector<int>> & states, const Smoothing_t smoothing) : SPODELd &fit(torch::Tensor & X, torch::Tensor & y, const std::vector<std::string> & features, const std::string & className, std::map<std::string,std::vector<int>> & states, const Smoothing_t smoothing) : SPODELd &fit(torch::Tensor & dataset, const std::vector<std::string> & features, const std::string & className, std::map<std::string,std::vector<int>> & states, const Smoothing_t smoothing) : SPODELd &graph(const std::string & name = "SPODELd") const : std::vector<std::string>predict(torch::Tensor & X) : torch::Tensorversion() : std::stringbayesnet::TANLdTANLd() : void~TANLd() = default : voidfit(torch::Tensor & X, torch::Tensor & y, const std::vector<std::string> & features, const std::string & className, std::map<std::string,std::vector<int>> & states, const Smoothing_t smoothing) : TANLd &graph(const std::string & name = "TANLd") const : std::vector<std::string>predict(torch::Tensor & X) : torch::Tensorbayesnet::EnsembleEnsemble(bool predict_voting = true) : void~Ensemble() = default : voidcompute_arg_max(std::vector<std::vector<double>> & X) : std::vector<int>compute_arg_max(torch::Tensor & X) : torch::Tensordump_cpt() const : std::stringgetNumberOfEdges() const : intgetNumberOfNodes() const : intgetNumberOfStates() const : intgraph(const std::string & title) const : std::vector<std::string>predict(std::vector<std::vector<int>> & X) : std::vector<int>predict(torch::Tensor & X) : torch::Tensorpredict_average_proba(torch::Tensor & X) : torch::Tensorpredict_average_proba(std::vector<std::vector<int>> & X) : std::vector<std::vector<double>>predict_average_voting(torch::Tensor & X) : torch::Tensorpredict_average_voting(std::vector<std::vector<int>> & X) : std::vector<std::vector<double>>predict_proba(std::vector<std::vector<int>> & X) : std::vector<std::vector<double>>predict_proba(torch::Tensor & X) : torch::Tensorscore(std::vector<std::vector<int>> & X, std::vector<int> & y) : floatscore(torch::Tensor & X, torch::Tensor & y) : floatshow() const : std::vector<std::string>topological_order() : std::vector<std::string>trainModel(const torch::Tensor & weights, const Smoothing_t smoothing) : voidvoting(torch::Tensor & votes) : torch::Tensormodels : std::vector<std::unique_ptr<Classifier>>n_models : unsigned intpredict_voting : boolsignificanceModels : std::vector<double>bayesnet::A2DEA2DE(bool predict_voting = false) : void~A2DE() : voidbuildModel(const torch::Tensor & weights) : voidgraph(const std::string & title = "A2DE") const : std::vector<std::string>setHyperparameters(const nlohmann::json & hyperparameters) : voidbayesnet::AODEAODE(bool predict_voting = false) : void~AODE() : voidbuildModel(const torch::Tensor & weights) : voidgraph(const std::string & title = "AODE") const : std::vector<std::string>setHyperparameters(const nlohmann::json & hyperparameters) : voidbayesnet::FeatureSelectFeatureSelect(const torch::Tensor & samples, const std::vector<std::string> & features, const std::string & className, const int maxFeatures, const int classNumStates, const torch::Tensor & weights) : void~FeatureSelect() : voidcomputeMeritCFS() : doublecomputeSuFeatures(const int a, const int b) : doublecomputeSuLabels() : voidfit() = 0 : voidgetFeatures() const : std::vector<int>getScores() const : std::vector<double>initialize() : voidsymmetricalUncertainty(int a, int b) : doublefitted : boolmaxFeatures : intselectedFeatures : std::vector<int>selectedScores : std::vector<double>suFeatures : std::map<std::pair<int,int>,double>suLabels : std::vector<double>weights : const torch::Tensor &bayesnet::(anonymous_60342586)CFS : std::stringFCBF : std::stringIWSS : std::stringbayesnet::(anonymous_60343240)ASC : std::stringDESC : std::stringRAND : std::stringbayesnet::BoostBoost(bool predict_voting = false) : void~Boost() = default : voidbuildModel(const torch::Tensor & weights) : voidfeatureSelection(torch::Tensor & weights_) : std::vector<int>setHyperparameters(const nlohmann::json & hyperparameters_) : voidupdate_weights(torch::Tensor & ytrain, torch::Tensor & ypred, torch::Tensor & weights) : std::tuple<torch::Tensor &,double,bool>update_weights_block(int k, torch::Tensor & ytrain, torch::Tensor & weights) : std::tuple<torch::Tensor &,double,bool>X_test : torch::TensorX_train : torch::Tensorbisection : boolblock_update : boolconvergence : boolconvergence_best : boolfeatureSelector : FeatureSelect *maxTolerance : intorder_algorithm : std::stringselectFeatures : boolselect_features_algorithm : std::stringthreshold : doubley_test : torch::Tensory_train : torch::Tensorbayesnet::AODELdAODELd(bool predict_voting = true) : void~AODELd() = default : voidbuildModel(const torch::Tensor & weights) : voidfit(torch::Tensor & X_, torch::Tensor & y_, const std::vector<std::string> & features_, const std::string & className_, std::map<std::string,std::vector<int>> & states_, const Smoothing_t smoothing) : AODELd &graph(const std::string & name = "AODELd") const : std::vector<std::string>trainModel(const torch::Tensor & weights, const Smoothing_t smoothing) : voidbayesnet::(anonymous_60275628)CFS : std::stringFCBF : std::stringIWSS : std::stringbayesnet::(anonymous_60276282)ASC : std::stringDESC : std::stringRAND : std::stringbayesnet::BoostA2DEBoostA2DE(bool predict_voting = false) : void~BoostA2DE() = default : voidgraph(const std::string & title = "BoostA2DE") const : std::vector<std::string>trainModel(const torch::Tensor & weights, const Smoothing_t smoothing) : voidbayesnet::(anonymous_60275502)CFS : std::stringFCBF : std::stringIWSS : std::stringbayesnet::(anonymous_60276156)ASC : std::stringDESC : std::stringRAND : std::stringbayesnet::BoostAODEBoostAODE(bool predict_voting = false) : void~BoostAODE() = default : voidgraph(const std::string & title = "BoostAODE") const : std::vector<std::string>trainModel(const torch::Tensor & weights, const Smoothing_t smoothing) : voidbayesnet::CFSCFS(const torch::Tensor & samples, const std::vector<std::string> & features, const std::string & className, const int maxFeatures, const int classNumStates, const torch::Tensor & weights) : void~CFS() : voidfit() : voidbayesnet::FCBFFCBF(const torch::Tensor & samples, const std::vector<std::string> & features, const std::string & className, const int maxFeatures, const int classNumStates, const torch::Tensor & weights, const double threshold) : void~FCBF() : voidfit() : voidbayesnet::IWSSIWSS(const torch::Tensor & samples, const std::vector<std::string> & features, const std::string & className, const int maxFeatures, const int classNumStates, const torch::Tensor & weights, const double threshold) : void~IWSS() : voidfit() : voidbayesnet::(anonymous_60730495)CFS : std::stringFCBF : std::stringIWSS : std::stringbayesnet::(anonymous_60731150)ASC : std::stringDESC : std::stringRAND : std::stringbayesnet::(anonymous_60653004)CFS : std::stringFCBF : std::stringIWSS : std::stringbayesnet::(anonymous_60653658)ASC : std::stringDESC : std::stringRAND : std::stringbayesnet::(anonymous_60731375)CFS : std::stringFCBF : std::stringIWSS : std::stringbayesnet::(anonymous_60732030)ASC : std::stringDESC : std::stringRAND : std::stringbayesnet::MSTMST() = default : voidMST(const std::vector<std::string> & features, const torch::Tensor & weights, const int root) : voidinsertElement(std::list<int> & variables, int variable) : voidmaximumSpanningTree() : std::vector<std::pair<int,int>>reorder(std::vector<std::pair<float,std::pair<int,int>>> T, int root_original) : std::vector<std::pair<int,int>>bayesnet::GraphGraph(int V) : voidaddEdge(int u, int v, float wt) : voidfind_set(int i) : intget_mst() : std::vector<std::pair<float,std::pair<int,int>>>kruskal_algorithm() : voidunion_set(int u, int v) : voidparentschildrennodesmodelmetricsstatusmodelsfeatureSelector \ No newline at end of file diff --git a/diagrams/dependency.svg b/diagrams/dependency.svg index 40dbd1c..da284f7 100644 --- a/diagrams/dependency.svg +++ b/diagrams/dependency.svg @@ -1,128 +1,314 @@ - - - + + BayesNet - - + + +node0 + +BayesNet + + + node1 - -BayesNet + +/home/rmontanana/Code/libtorch/lib/libc10.so + + + +node0->node1 + + - + node2 - -/home/rmontanana/Code/libtorch/lib/libc10.so + +/home/rmontanana/Code/libtorch/lib/libc10_cuda.so - - -node1->node2 - - + + +node0->node2 + + - + node3 - -/home/rmontanana/Code/libtorch/lib/libkineto.a + +/home/rmontanana/Code/libtorch/lib/libkineto.a - - -node1->node3 - - + + +node0->node3 + + - -node4 - -mdlp - - - -node1->node4 - - - - -node9 - -torch_library +node4 + +/usr/lib64/libcuda.so - + -node1->node9 - - - - - -node10 - --Wl,--no-as-needed,"/home/rmontanana/Code/libtorch/lib/libtorch.so" -Wl,--as-needed - - - -node9->node10 - - +node0->node4 + + - + node5 - -torch_cpu_library + +/usr/local/cuda/lib64/libcudart.so - - -node9->node5 - - + + +node0->node5 + + - + node6 - --Wl,--no-as-needed,"/home/rmontanana/Code/libtorch/lib/libtorch_cpu.so" -Wl,--as-needed + +/usr/local/cuda/lib64/libnvToolsExt.so - - -node5->node6 - - + + +node0->node6 + + - + node7 - -caffe2::mkl + +/usr/local/cuda/lib64/libnvrtc.so - - -node5->node7 - - + + +node0->node7 + + - + node8 - -dummy -(protobuf::libprotobuf) + +fimdlp - + + +node0->node8 + + + + + +node19 + +torch_library + + + +node0->node19 + + + + -node5->node8 - - +node8->node1 + + + + + +node8->node2 + + + + + +node8->node3 + + + + + +node8->node4 + + + + + +node8->node5 + + + + + +node8->node6 + + + + + +node8->node7 + + + + + +node8->node19 + + + + + +node20 + +-Wl,--no-as-needed,"/home/rmontanana/Code/libtorch/lib/libtorch.so" -Wl,--as-needed + + + +node19->node20 + + + + + +node9 + +torch_cpu_library + + + +node19->node9 + + + + + +node13 + +torch_cuda_library + + + +node19->node13 + + + + + +node10 + +-Wl,--no-as-needed,"/home/rmontanana/Code/libtorch/lib/libtorch_cpu.so" -Wl,--as-needed + + + +node9->node10 + + + + + +node11 + +caffe2::mkl + + + +node9->node11 + + + + + +node12 + +dummy +(protobuf::libprotobuf) + + + +node9->node12 + + + + + +node13->node9 + + + + + +node14 + +-Wl,--no-as-needed,"/home/rmontanana/Code/libtorch/lib/libtorch_cuda.so" -Wl,--as-needed + + + +node13->node14 + + + + + +node15 + +torch::cudart + + + +node13->node15 + + + + + +node17 + +torch::nvtoolsext + + + +node13->node17 + + + + + +node16 + +CUDA::cudart + + + +node15->node16 + + + + + +node18 + +CUDA::nvToolsExt + + + +node17->node18 + +