Files
NeuralNetworkLib/include/NeuralNetwork/ActivationFunction/ActivationFunction.h

51 lines
1.2 KiB
C++

#pragma once
#include <string>
namespace NeuralNetwork {
namespace ActivationFunction {
/**
* @author Tomas Cernik (Tom.Cernik@gmail.com)
* @brief Abstract class of activation function
*/
class ActivationFunction {
public:
virtual ~ActivationFunction() {}
/**
* @brief Returns derivation of output, it is slower than version with output as it needs to compute output
* @param input is input of function
*/
inline float derivatedOutput(const float &input) const {
return derivatedOutput(input,operator()(input));
};
/**
* @brief Returns derivation of output
* @param input is input of function
* @param output is output of function
* @see derivatedOutput
*/
virtual float derivatedOutput(const float &input, const float &output) const=0;
/**
* @brief Returns value of output
* @param x is input of function
*/
virtual float operator()(const float &x) const=0;
/**
* @brief Function returns clone of object
*/
virtual ActivationFunction* clone() const = 0;
/**
* @brief This is a virtual function for storing Activation function
* @returns json describing function
*/
virtual std::string stringify() const =0;
};
}
}