FMT 1.2.0
Forest management tools for forest planning
Loading...
Searching...
No Matches
FMTYieldModelNn.h
Go to the documentation of this file.
1
2/*
3Copyright (c) 2019 Gouvernement du Québec
4
5SPDX-License-Identifier: LiLiQ-R-1.1
6License-Filename: LICENSES/EN/LiLiQ-R11unicode.txt
7*/
8#include "FMTObject.h"
9#include "FMTYieldModel.h"
10#include <boost/serialization/serialization.hpp>
11#include <boost/serialization/nvp.hpp>
12
13
14#ifndef FMTYIELDMODELNN_Hm_included
15#define FMTYIELDMODELNN_Hm_included
16
17namespace Ort
18{
19 struct Env;
20 struct Session;
21}
22
23
24namespace Core
25{
26 // DocString: FMTYieldModelNn
31 {
33 // DocString: FMTYieldModelNn::serialize
40 template<class Archive>
41 void serialize(Archive& ar, const unsigned int version)
42 {
43 ar & boost::serialization::make_nvp("FMTyieldmodel", boost::serialization::base_object<FMTYieldModel>(*this));
44 }
45 public:
46 // DocString: FMTYieldModelNn::~FMTYieldModel()
51 // DocString: FMTYieldModelNn::FMTYieldModelNn()
55 FMTYieldModelNn()=default;
56 // DocString: FMTYieldModelNn::FMTYieldModelNn()
62 // DocString: FMTYieldModelNn::predict
68 const std::vector<double>predict(const Core::FMTYieldRequest& request) const;
69 protected:
70 #ifdef FMTWITHONNXR
71 static std::unique_ptr<Ort::Env> m_envPtr;
72 std::unique_ptr<Ort::Session> m_sessionPtr;
73 #endif
74 static const float m_UNKNOWN_DISTURBANCE_CODE;
75 const std::string m_JSON_PROP_MODEL_TYPE = "modelType";
76 const std::string m_JSON_PROP_MODEL_YIELDS = "modelYields";
77 const std::string m_JSON_PROP_MODEL_OUTPUTS = "outputNames";
78 const std::string m_JSON_PROP_STAND_FILE_PATH = "csvStandardisationFile";
79 std::string m_modelType;
80 std::vector<float> m_standardParamMeans = {};
81 std::vector<float> m_standardParamVars = {};
82 std::vector<std::string> m_modelOutputs = {};
83 // DocString: FMTYieldModelNn::_getNextLineAndSplitIntoTokens
89 static const std::vector<std::string> _getNextLineAndSplitIntoTokens(std::istream& str);
90 // DocString: FMTYieldModelNn::_standardize
98 static const std::vector<float> _standardize(std::vector<float>& input, const std::vector<float>& means, const std::vector<float>& vars);
99
100 // DocString: FMTYieldModelNn::_validateInputYields
106 void _validateInputYields(std::vector<std::string>& expectedYields, std::vector<std::string>& inputYields) const;
107 // DocString: FMTYieldModelNn::getModelType()
112 const std::string& getModelType() const;
113 // DocString: FMTYieldModelNn::_getStandardParamMeans()
118 const std::vector<float>& _getStandardParamMeans() const;
119 // DocString: FMTYieldModelNn::_getStandardParamVars()
124 const std::vector<float>& _getStandardParamVars() const;
125 // DocString: FMTYieldModelNn::getModelOutputNames()
130 const std::vector<std::string>& getModelOutputNames() const;
131 // DocString: FMTYieldModelNn::getInputValues()
137 virtual const std::vector<double> getInputValues(const Graph::FMTPredictor& predictor) const = 0;
138 // DocString: FMTYieldModelNn::removeNans
143 const void removeNans(std::vector<float>& input) const;
144 // DocString: FMTYieldModelNn::FMTYieldModelPools(const boost::property_tree::ptree& jsonProps, std::vector<std::string>& inputYields)
150 FMTYieldModelNn(const boost::property_tree::ptree& jsonProps, std::vector<std::string>& inputYields);
151 };
152}
153
154#endif
Abstract machine learning yield model based on a neural network.
Definition: FMTYieldModelNn.h:31
FMTYieldModelNn()=default
Default constructor for FMTYieldModelNn.
const std::vector< double > predict(const Core::FMTYieldRequest &request) const
Run the machine learning model to predict its outputs for a request.
static const std::vector< std::string > _getNextLineAndSplitIntoTokens(std::istream &str)
Read a CSV file line by line, splitting into tokens.
std::vector< float > m_standardParamMeans
Definition: FMTYieldModelNn.h:80
FMTYieldModelNn(const FMTYieldModelNn &rhs)
Copy constructor for FMTYieldModelNn.
std::vector< std::string > m_modelOutputs
Definition: FMTYieldModelNn.h:82
const std::vector< float > & _getStandardParamVars() const
Return the input variable variances used in the standardization process.
const std::string m_JSON_PROP_MODEL_YIELDS
Definition: FMTYieldModelNn.h:76
virtual ~FMTYieldModelNn()
Destructor for FMTYieldModelNn.
void _validateInputYields(std::vector< std::string > &expectedYields, std::vector< std::string > &inputYields) const
Validate that there is the expected number of inputs in the model.
const std::vector< std::string > & getModelOutputNames() const
Return the model output names.
const void removeNans(std::vector< float > &input) const
Replace nan values with default values.
const std::vector< float > & _getStandardParamMeans() const
Return the input variable means used in the standardization process.
const std::string m_JSON_PROP_MODEL_OUTPUTS
Definition: FMTYieldModelNn.h:77
FMTYieldModelNn(const boost::property_tree::ptree &jsonProps, std::vector< std::string > &inputYields)
Construct a FMTYieldModelNn from a JSON tree and an input yield name list.
std::string m_modelType
Definition: FMTYieldModelNn.h:79
const std::string & getModelType() const
Return the model type.
const std::string m_JSON_PROP_MODEL_TYPE
Definition: FMTYieldModelNn.h:75
friend class boost::serialization::access
Definition: FMTYieldModelNn.h:32
static std::unique_ptr< Ort::Env > m_envPtr
Definition: FMTYieldModelNn.h:71
std::unique_ptr< Ort::Session > m_sessionPtr
Definition: FMTYieldModelNn.h:72
std::vector< float > m_standardParamVars
Definition: FMTYieldModelNn.h:81
virtual const std::vector< double > getInputValues(const Graph::FMTPredictor &predictor) const =0
Return the input values based on a predictor.
const std::string m_JSON_PROP_STAND_FILE_PATH
Definition: FMTYieldModelNn.h:78
static const float m_UNKNOWN_DISTURBANCE_CODE
Definition: FMTYieldModelNn.h:74
static const std::vector< float > _standardize(std::vector< float > &input, const std::vector< float > &means, const std::vector< float > &vars)
Apply the standardization feature scaling to the inputs of a machine learning model.
Abstract class to be implemented as a machine learning yield model.
Definition: FMTYieldModel.h:45
Request for yield values using a development and optionally a graph vertex.
Definition: FMTYieldRequest.h:37
Predictor gathering the source and target ages, yields, distances and disturbances of a graph transit...
Definition: FMTPredictor.h:33
Definition: FMTYieldModel.h:30
The Core namespace provides classes for simulating stands/strata growth/harvest through time.
Definition: FMTAction.h:34
Definition: FMTYieldModelNn.h:18