Skip to content
Snippets Groups Projects
Commit 4f0a3de1 authored by Van Dung NGUYEN's avatar Van Dung NGUYEN
Browse files

add new ann layer

parent db204fc2
No related branches found
No related tags found
No related merge requests found
...@@ -152,6 +152,25 @@ DenseLayer* TanhDenseLayer::clone() const ...@@ -152,6 +152,25 @@ DenseLayer* TanhDenseLayer::clone() const
return new TanhDenseLayer(*this); return new TanhDenseLayer(*this);
} }
SigmoidDenseLayer::SigmoidDenseLayer(int numIn, int numOut): DenseLayer(numIn,numOut)
{
if (activationFunc!=NULL) delete activationFunc;
activationFunc = new SigmoidActivationFunction();
}
SigmoidDenseLayer::~SigmoidDenseLayer()
{
};
void SigmoidDenseLayer::print_infos() const
{
printf("sigmoid dense layer: nbInput = %d, nbOutput=%d\n",numInput,numOutput);
}
DenseLayer* SigmoidDenseLayer::clone() const
{
return new SigmoidDenseLayer(*this);
}
LeakyReluDenseLayer::LeakyReluDenseLayer(int numIn, int numOut, double a): DenseLayer(numIn,numOut) LeakyReluDenseLayer::LeakyReluDenseLayer(int numIn, int numOut, double a): DenseLayer(numIn,numOut)
{ {
if (activationFunc!=NULL) delete activationFunc; if (activationFunc!=NULL) delete activationFunc;
......
...@@ -16,7 +16,7 @@ ...@@ -16,7 +16,7 @@
class activationFunction class activationFunction
{ {
public: public:
enum functionType{undef=0, linear=1,leakyRelu=2,relu=3,tanHyperbolic=4}; enum functionType{undef=0, linear=1,leakyRelu=2,relu=3,tanHyperbolic=4,sigmoid=5};
public: public:
activationFunction(){} activationFunction(){}
activationFunction(const activationFunction& src){} activationFunction(const activationFunction& src){}
...@@ -47,10 +47,23 @@ class TanhActivationFunction: public activationFunction ...@@ -47,10 +47,23 @@ class TanhActivationFunction: public activationFunction
virtual ~TanhActivationFunction(){} virtual ~TanhActivationFunction(){}
virtual activationFunction::functionType getType() const {return activationFunction::tanHyperbolic;}; virtual activationFunction::functionType getType() const {return activationFunction::tanHyperbolic;};
virtual double getVal(double x) const {return tanh(x);}; virtual double getVal(double x) const {return tanh(x);};
virtual double getDiff(double x) const {return 1.-x*x;}; virtual double getDiff(double x) const {return 1.-tanh(x)*tanh(x);};
virtual activationFunction* clone() const {return new TanhActivationFunction(*this);}; virtual activationFunction* clone() const {return new TanhActivationFunction(*this);};
}; };
class SigmoidActivationFunction: public activationFunction
{
public:
SigmoidActivationFunction(){}
SigmoidActivationFunction(const SigmoidActivationFunction& src): activationFunction(src){}
virtual ~SigmoidActivationFunction(){}
virtual activationFunction::functionType getType() const {return activationFunction::sigmoid;};
virtual double getVal(double x) const {return 1./(1.+exp(-x));};
virtual double getDiff(double x) const {return exp(x)/(1.+exp(x))/(1.+exp(x));};
virtual activationFunction* clone() const {return new SigmoidActivationFunction(*this);};
};
class LeakyReluActivationFunction : public activationFunction class LeakyReluActivationFunction : public activationFunction
{ {
protected: protected:
...@@ -129,6 +142,18 @@ class TanhDenseLayer : public DenseLayer ...@@ -129,6 +142,18 @@ class TanhDenseLayer : public DenseLayer
#endif //SWIG #endif //SWIG
}; };
class SigmoidDenseLayer : public DenseLayer
{
public:
SigmoidDenseLayer(int numIn, int numOut);
virtual void print_infos() const;
#ifndef SWIG
SigmoidDenseLayer(const SigmoidDenseLayer& src):DenseLayer(src){}
virtual ~SigmoidDenseLayer();
virtual DenseLayer* clone() const;
#endif //SWIG
};
class LeakyReluDenseLayer : public DenseLayer class LeakyReluDenseLayer : public DenseLayer
{ {
public: public:
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment