#pragma once #include #include #include #include #include #define NEURAL_NETWORK_REGISTER_BASIS_FUNCTION(name,function) SIMPLEJSON_REGISTER(NeuralNetwork::BasisFunction::Factory,name,function) #define NEURAL_NETWORK_REGISTER_BASIS_FUNCTION_FINISH(name,function) SIMPLEJSON_REGISTER_FINISH(NeuralNetwork::BasisFunction::Factory,name,function) namespace NeuralNetwork { namespace BasisFunction { class BasisFunction : public SimpleJSON::SerializableObject { public: virtual ~BasisFunction() {} virtual float operator()(const std::vector& weights, const std::vector& input) const =0; /** * @brief Function returns clone of object */ virtual std::unique_ptr clone() const = 0; }; typedef SimpleJSON::Factory Factory; } }