43 virtual std::vector<double>
operator()(
const std::vector<double>& input) = 0;
47 virtual void apply(
const std::vector<double>& input, std::vector<double>& out)
const = 0;
49 [[nodiscard]]
virtual std::unique_ptr<ActivationFunction>
clone()
const = 0;
50 [[nodiscard]]
virtual std::string
toString()
const = 0;
81 std::vector<double>
operator()(
const std::vector<double>& input)
override;
82 void apply(
const std::vector<double>& input, std::vector<double>& out)
const override;
84 [[nodiscard]] std::unique_ptr<ActivationFunction>
clone()
const override;
85 [[nodiscard]] std::string
toString()
const override;
86 void print()
const override;
115 std::vector<double>
operator()(
const std::vector<double>& input)
override;
116 void apply(
const std::vector<double>& input, std::vector<double>& out)
const override;
118 [[nodiscard]] std::unique_ptr<ActivationFunction>
clone()
const override;
119 [[nodiscard]] std::string
toString()
const override;
120 void print()
const override;
160 std::vector<double>
operator()(
const std::vector<double>& input)
override;
161 void apply(
const std::vector<double>& input, std::vector<double>& out)
const override;
163 [[nodiscard]] std::unique_ptr<ActivationFunction>
clone()
const override;
164 [[nodiscard]] std::string
toString()
const override;
165 void print()
const override;
167 [[nodiscard]]
double getBeta()
const;
ActivationFunctionType
Identifies the concrete activation function type.
Definition activation_function.h:24
@ HEAVISIDE
Binary step function.
Definition activation_function.h:26
@ SIGMOID
Logistic (exponential) sigmoid.
Definition activation_function.h:25
@ ABSSIGMOID
Rational (absolute-value) sigmoid approximation — cedar's default.
Definition activation_function.h:27
Definition element_parameters.h:10
Rational (absolute-value) sigmoid — cedar's default activation function.
Definition activation_function.h:149
std::string toString() const override
Definition activation_function.cpp:143
std::vector< double > operator()(const std::vector< double > &input) override
Apply the activation function to input and return the result.
Definition activation_function.cpp:120
bool operator==(const AbsSigmoidFunction &other) const
Definition activation_function.cpp:133
std::unique_ptr< ActivationFunction > clone() const override
Definition activation_function.cpp:138
AbsSigmoidFunction(const AbsSigmoidFunction &)=default
double x_shift
Inflection point / threshold (cedar: theta).
Definition activation_function.h:150
~AbsSigmoidFunction() override=default
void apply(const std::vector< double > &input, std::vector< double > &out) const override
Apply the activation function in-place into a pre-allocated out buffer. out must already be sized to ...
Definition activation_function.cpp:125
double getXShift() const
Definition activation_function.cpp:166
double beta
Steepness parameter — cedar/cosivina naming (larger = steeper).
Definition activation_function.h:151
void print() const override
Definition activation_function.cpp:155
double getBeta() const
Definition activation_function.cpp:161
Abstract base for activation functions applied to a neural field.
Definition activation_function.h:36
virtual ~ActivationFunction()=default
ActivationFunction & operator=(const ActivationFunction &)=delete
ActivationFunction()=default
virtual void print() const =0
virtual std::string toString() const =0
virtual void apply(const std::vector< double > &input, std::vector< double > &out) const =0
Apply the activation function in-place into a pre-allocated out buffer. out must already be sized to ...
ActivationFunction(const ActivationFunction &)=default
virtual std::vector< double > operator()(const std::vector< double > &input)=0
Apply the activation function to input and return the result.
ActivationFunctionType type
Concrete function type.
Definition activation_function.h:37
virtual std::unique_ptr< ActivationFunction > clone() const =0
Heaviside step function.
Definition activation_function.h:106
~HeavisideFunction() override=default
std::unique_ptr< ActivationFunction > clone() const override
Definition activation_function.cpp:89
void print() const override
Definition activation_function.cpp:103
double x_shift
Threshold; activation strictly above this value maps to 1.
Definition activation_function.h:107
std::vector< double > operator()(const std::vector< double > &input) override
Apply the activation function to input and return the result.
Definition activation_function.cpp:73
void apply(const std::vector< double > &input, std::vector< double > &out) const override
Apply the activation function in-place into a pre-allocated out buffer. out must already be sized to ...
Definition activation_function.cpp:78
HeavisideFunction(const HeavisideFunction &)=default
double getXShift() const
Definition activation_function.cpp:109
bool operator==(const HeavisideFunction &other) const
Definition activation_function.cpp:84
std::string toString() const override
Definition activation_function.cpp:94
Logistic (exponential) sigmoid.
Definition activation_function.h:70
std::unique_ptr< ActivationFunction > clone() const override
Definition activation_function.cpp:34
std::vector< double > operator()(const std::vector< double > &input) override
Apply the activation function to input and return the result.
Definition activation_function.cpp:12
std::string toString() const override
Definition activation_function.cpp:39
void apply(const std::vector< double > &input, std::vector< double > &out) const override
Apply the activation function in-place into a pre-allocated out buffer. out must already be sized to ...
Definition activation_function.cpp:17
void print() const override
Definition activation_function.cpp:51
double getXShift() const
Definition activation_function.cpp:62
~SigmoidFunction() override=default
double x_shift
Inflection point of the sigmoid (cedar: theta; cosivina: x0).
Definition activation_function.h:71
double getSteepness() const
Definition activation_function.cpp:57
SigmoidFunction(const SigmoidFunction &)=default
bool operator==(const SigmoidFunction &other) const
Definition activation_function.cpp:29
double steepness
Slope at the inflection point (cedar/cosivina: beta).
Definition activation_function.h:72