#pragma once #include 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 * @param input is input of function * @param output is output of function */ virtual float derivatedOutput(const float &input,const float &output)=0; /** * @brief Returns value of output * @param x is input of function */ virtual float operator()(const float &x)=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; }; } }