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

33 lines
1016 B
C++

#pragma once
#include "./ActivationFunction.h"
namespace NeuralNetwork {
namespace ActivationFunction {
class Heaviside: public ActivationFunction {
public:
Heaviside(const float &lambdaP=1.0): lambda(lambdaP) {}
inline virtual float derivatedOutput(const float &,const float &) const override { return 1.0; }
inline virtual float operator()(const float &x) const override { return x>lambda ? 1.0f : 0.0f; };
virtual ActivationFunction* clone() const override {
return new Heaviside(lambda);
}
virtual SimpleJSON::Type::Object serialize() const override {
return {{"class", "NeuralNetwork::ActivationFunction::Heaviside"}, {"lambda", lambda}};
}
static std::unique_ptr<Heaviside> deserialize(const SimpleJSON::Type::Object &obj) {
return std::unique_ptr<Heaviside>(new Heaviside(obj["lambda"].as<double>()));
}
protected:
float lambda;
NEURAL_NETWORK_REGISTER_ACTIVATION_FUNCTION(NeuralNetwork::ActivationFunction::Heaviside, Heaviside::deserialize)
};
}
}