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

39 lines
1.1 KiB
C++

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