激活函数实现--2 Sigmoid函数实现

时间:2021-11-20 09:16:52

1.Sigmoid函数的定义

激活函数实现--2 Sigmoid函数实现

激活函数实现--2 Sigmoid函数实现





2.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>