1.Sigmoid函数的定义
2.Sigmoid函数的导数
3.SIGMOID激活的实现过程
Sigmoid主要是通过类Sigmoid来实现的,该类继承自AbstrcactActivation类,主要实现Activating接口和Derivating接口。Sigmoid类的定义如下:
<span style="font-size:24px;">#ifndef SIGMOID_H
#define SIGMOID_H
#include "abstractactivationfunction.h"
/**
* @brief The Sigmoid class used to calculate the sigmoid activation function.
*
* @author sheng
* @date 2014-07-18
* @version 0.1
*
* @history
* <author> <date> <version> <description>
* sheng 2014-07-18 0.1 build the class
*
*/
class Sigmoid : public AbstractActivationFunction
{
public:
Sigmoid();
cv::Mat Activating(const cv::Mat& InputMat);
cv::Mat Derivating(const cv::Mat& InputMat);
};
#endif // SIGMOID_H
</span>
函数的实现如下:
<span style="font-size:24px;">#include "sigmoid.h"
#include <iostream>
/**
* @brief The default constructor.
*
* @author sheng
* @version 0.1
* @date 2014-07-18
*
* @history
* <author> <date> <version> <description>
* sheng 2014-07-18 0.1 build the function
*
*
*/
Sigmoid::Sigmoid()
{
}
/**
* @brief Calculating the sigmoid of the inputmat.
* @param InputMat The input mat
* @return the result of sigmoid(inputmat), whose size is the same of the
* InputMat.
*
*
* @author sheng
* @version 0.1
* @date 2014-07-18
*
* @history
* <author> <date> <version> <description>
* sheng 2014-07-18 0.1 build the function
*
*
*
*/
cv::Mat Sigmoid::Activating(const cv::Mat& InputMat)
{
// convert the mat to be float
cv::Mat FloatInput = ConvertToFloatMat(InputMat);
// calculate the exp(-x)
cv::Mat TmpExp;
cv::exp(-FloatInput, TmpExp);
// calculate the sigmoid
cv::Mat ResultMat = 1.0 / (1.0 + TmpExp);
return ResultMat;
}
/**
* @brief Calculating the derivating of the sigmoid function.
* @param InputMat The input mat.
* @return The result of the derivative of the sigmoid function, whose size is
* the same of the input mat.
*
* @author sheng
* @version 0.1
* @date 2014-07-18
*
* @history
* <author> <date> <version> <description>
* sheng 2014-07-18 0.1 build the function
*
*
*/
cv::Mat Sigmoid::Derivating(const cv::Mat &InputMat)
{
// calculating the sigmoid
cv::Mat TmpMat = Activating(InputMat);
// calculating the derivate of sigmoid function
cv::Mat ResultMat = TmpMat.mul(1.0 - TmpMat);
return ResultMat;
}</span>