Loading...
Searching...
No Matches
expression_evaluator.h
Go to the documentation of this file.
1// SPDX-License-Identifier: AGPL-3.0-only
2// Copyright (C) 2026 Artificial Intelligence Techniques, S.L. and Roberto López González
3
4#pragma once
5
6#include "opennn/core/pch.h"
7
8namespace opennn
9{
10
11class Network;
12
14
16{
17 enum class Kind : unsigned char
18 {
22 };
23
25 int index = 0;
26 float constant = 0.0f;
27
28 bool operator==(const ExpressionOp&) const = default;
29};
30
31
33{
34 vector<ExpressionOp> operations;
35
36 int stack_depth = 0;
37};
38
39
41{
42 string text;
43
45
46 vector<Index> input_indices;
47 vector<Index> output_indices;
48
49 vector<pair<Index, float>> linear_input_terms;
50 vector<pair<Index, float>> linear_output_terms;
51
52 float linear_constant = 0.0f;
53
55
56 vector<pair<Index, ExpressionProgram>> input_gradient;
57
58 Index symmetric_order = 0;
59
60 vector<pair<Index, double>> symmetric_terms;
61
62 double symmetric_scale = 1.0;
63
64 float evaluate(const VectorR&, const VectorR&) const;
65};
66
67
68// Semicolons inside backtick-quoted names are part of the name, not separators.
69vector<string> split_expression_list(const string&);
70
72 const vector<pair<string, Index>>&,
73 const vector<pair<string, Index>>&);
74
75CompiledExpression compile_expression(const string&, const Network*, const string& role = "Expression");
76
77CompiledExpression compile_elementary_symmetric(const vector<Index>& variables,
78 const vector<float>& spans,
79 Index order,
80 float tolerance);
81
83
84CompiledExpression compile_membership(const string&, const Network*, const vector<float>& allowed);
85
87
89
91
93 const VectorR& point,
94 const VectorR& output,
95 VectorR& gradient);
96
98
99}
Definition network.h:87
Definition configuration.h:10
bool is_univariate(const CompiledExpression &)
bool is_bare_variable(const CompiledExpression &)
CompiledExpression compile_membership(const string &, const Network *, const vector< float > &allowed)
CompiledExpression compile_elementary_symmetric(const vector< Index > &variables, const vector< float > &spans, Index order, float tolerance)
CompiledExpression compile_integrality(const string &, const Network *)
CompiledExpression compile_expression(const string &, const vector< pair< string, Index > > &, const vector< pair< string, Index > > &)
void evaluate_input_gradient(const CompiledExpression &, const VectorR &point, const VectorR &output, VectorR &gradient)
vector< string > split_expression_list(const string &)
bool is_output_coupled(const CompiledExpression &)
ExpressionLinearity
Definition expression_evaluator.h:13
@ Linear
Definition expression_evaluator.h:13
@ Nonlinear
Definition expression_evaluator.h:13
Eigen::Matrix< float, Eigen::Dynamic, 1 > VectorR
Definition opennn_types.h:335
Definition expression_evaluator.h:41
float evaluate(const VectorR &, const VectorR &) const
vector< pair< Index, float > > linear_output_terms
Definition expression_evaluator.h:50
vector< pair< Index, ExpressionProgram > > input_gradient
Definition expression_evaluator.h:56
vector< Index > output_indices
Definition expression_evaluator.h:47
string text
Definition expression_evaluator.h:42
ExpressionProgram program
Definition expression_evaluator.h:54
vector< pair< Index, double > > symmetric_terms
Definition expression_evaluator.h:60
double symmetric_scale
Definition expression_evaluator.h:62
vector< pair< Index, float > > linear_input_terms
Definition expression_evaluator.h:49
float linear_constant
Definition expression_evaluator.h:52
ExpressionLinearity linearity
Definition expression_evaluator.h:44
Index symmetric_order
Definition expression_evaluator.h:58
vector< Index > input_indices
Definition expression_evaluator.h:46
Definition expression_evaluator.h:16
float constant
Definition expression_evaluator.h:26
int index
Definition expression_evaluator.h:25
bool operator==(const ExpressionOp &) const =default
Kind kind
Definition expression_evaluator.h:24
Kind
Definition expression_evaluator.h:18
@ Sin
Definition expression_evaluator.h:21
@ Tan
Definition expression_evaluator.h:21
@ Abs
Definition expression_evaluator.h:21
@ Div
Definition expression_evaluator.h:20
@ Mul
Definition expression_evaluator.h:20
@ Max
Definition expression_evaluator.h:21
@ Min
Definition expression_evaluator.h:21
@ Pow
Definition expression_evaluator.h:20
@ PushInput
Definition expression_evaluator.h:19
@ PushConst
Definition expression_evaluator.h:19
@ Sqrt
Definition expression_evaluator.h:21
@ Exp
Definition expression_evaluator.h:21
@ PushOutput
Definition expression_evaluator.h:19
@ Log
Definition expression_evaluator.h:21
@ Sub
Definition expression_evaluator.h:20
@ Add
Definition expression_evaluator.h:20
@ Neg
Definition expression_evaluator.h:20
@ Cos
Definition expression_evaluator.h:21
Definition expression_evaluator.h:33
vector< ExpressionOp > operations
Definition expression_evaluator.h:34
int stack_depth
Definition expression_evaluator.h:36