Krotos Modules 3
Loading...
Searching...
No Matches
LinearModel.h
Go to the documentation of this file.
1#pragma once
2#include <vector>
3#include "../krotos_eigen_updated/Eigen/Dense"
4
5namespace krotos
6{
14{
15 public:
21 LinearModel(const std::vector<Eigen::MatrixXf>& weights, const std::vector<Eigen::VectorXf>& biases,
22 const Eigen::MatrixXf& weightsOutput, const Eigen::VectorXf& biasOutput, const StringArray& categories);
23
29
35 Eigen::VectorXf infer(const Eigen::VectorXf& input);
36 Eigen::VectorXf inferSingle(const Eigen::VectorXf& input);
40 String getProminentCategory();
41
45 StringArray getOutputCategories();
46
50 void loadModelData();
51
52 private:
53 // layer weights (hidden)
54 std::vector<Eigen::MatrixXf> m_weights;
55
56 // layer weights (output)
57 Eigen::MatrixXf m_weightsOutput;
58
59 // layer biases
60 std::vector<Eigen::VectorXf> m_bias;
61
62 // output biases
63 Eigen::VectorXf m_biasOutput;
64
65 // output classes vector
66 StringArray m_outputCategories;
67
68 // layer outputs
69 std::vector<Eigen::VectorXf> m_layerOutput;
70
71 // model outputs
72 Eigen::VectorXf m_outputs;
73
74 // number of layers
76
77 // leyer size
79
80 // output size
82
83 // array to load weights from json
85
86 // working buffer is used for intermediate storage as eigen complaints
87 // when overwriting same vector
88 Eigen::VectorXf m_workingBuffer;
89
90 // the index of the prominent category
92
94 Eigen::VectorXf sigmoid(const Eigen::VectorXf& lOut);
95
97 Eigen::VectorXf relu(const Eigen::VectorXf& lOut);
98};
99
100} // namespace krotos
class that infers linear model it supports multiple fully connected hidden layers and calculates mult...
Definition LinearModel.h:14
Eigen::VectorXf relu(const Eigen::VectorXf &lOut)
relu activation function
Definition LinearModel.cpp:200
Eigen::VectorXf m_outputs
Definition LinearModel.h:72
void loadModelData()
Definition LinearModel.cpp:81
Eigen::VectorXf m_workingBuffer
Definition LinearModel.h:88
Eigen::VectorXf infer(const Eigen::VectorXf &input)
infers the model to predict output
Definition LinearModel.cpp:35
std::vector< Eigen::VectorXf > m_layerOutput
Definition LinearModel.h:69
int m_layerSize
Definition LinearModel.h:78
std::vector< Eigen::VectorXf > m_bias
Definition LinearModel.h:60
Eigen::MatrixXf m_weightsOutput
Definition LinearModel.h:57
Eigen::VectorXf inferSingle(const Eigen::VectorXf &input)
Definition LinearModel.cpp:64
Eigen::VectorXf m_biasOutput
Definition LinearModel.h:63
StringArray m_outputCategories
Definition LinearModel.h:66
std::vector< Eigen::MatrixXf > m_weights
Definition LinearModel.h:54
LinearModel()
Constructor for the linear model, this will automatically load a model that is expected to exist in t...
Definition LinearModel.cpp:33
StringArray getOutputCategories()
returns the output categories
Definition LinearModel.cpp:193
int m_numLayers
Definition LinearModel.h:75
int m_outputSize
Definition LinearModel.h:81
String getProminentCategory()
returns the prominent category name
Definition LinearModel.cpp:202
var m_weightsVar
Definition LinearModel.h:84
Eigen::VectorXf sigmoid(const Eigen::VectorXf &lOut)
sigmoid activation function
Definition LinearModel.cpp:198
int m_prominentCategoryIndex
Definition LinearModel.h:91
Definition AirAbsorptionFilter.cpp:2