#pragma once #include #include #include #include #include #include #include #include "./StreamingBasisFunction.h" #include "../../sse_mathfun.h" namespace NeuralNetwork { namespace BasisFunction { class Linear: public StreamingBasisFunction { public: Linear() {} virtual float operator()(const std::vector& weights, const std::vector& input) const override; virtual std::unique_ptr clone() const override { return std::unique_ptr(new Linear()); } virtual SimpleJSON::Type::Object serialize() const override { return {{"class", "NeuralNetwork::BasisFunction::Linear"}}; } static std::unique_ptr deserialize(const SimpleJSON::Type::Object &) { return std::unique_ptr(new Linear()); } NEURAL_NETWORK_REGISTER_BASIS_FUNCTION(NeuralNetwork::BasisFunction::Linear, deserialize) }; } }