其Python版的代码在前文已经实现,数据和结果也都是以此做参考和对比的。数学表达式和相关含义也都在此文有学习和论述:
深度学习入门初探——损失函数均方误差https://www.toutiao.com/i7033783692963185188/?group_id=7033783692963185188
C语言基于前文的代码组织加入均方误差函数MaenSquaredError的实现:
深度学习入门初探——C语言版的激活函数https://www.toutiao.com/i7034883235377054211/?group_id=7034883235377054211
/*
*
* function name: step function
* param : datavar *psrc 经过预测得到的结果data address
* param : datavar *dst 测试数据的正确结果data address
* param : ctrovar length data length
*/
datavar MaenSquaredError(datavar *psrc, datavar *dst, ctrovar length)
{
ctrovar i = 0;
datavar sum = 0.0;
for(i=0; i<length; i++){
sum = sum + (dst[i]-psrc[i])*(dst[i]-psrc[i]);
}
return (0.5*sum);
}
/*!
*****************************************************************************
* \file
* functions.h
*
* \brief
* function
*
* \version
* 0.1 - 2021/11/28 19:10:20: Initial Version
*
* \author
* cy
*****************************************************************************
*/
#ifndef _FUNCTION_
#define _FUNCTION_
#include <math.h>
#include "unstd.h"
#include "option.h"
#ifdef __cplusplus
extern "C" {
#endif
void StepFunc(datavar *src, datavar *dst, ctrovar length);
void SigmoidFunc(datavar *src, datavar *dst, ctrovar length);
void ReluFunc(datavar *src, datavar *dst, ctrovar length);
void SoftmaxFunc(datavar *src, datavar *dst, ctrovar length);
datavar MaenSquaredError(datavar *src, datavar *dst, ctrovar length);
#ifdef __cplusplus
}
#endif
#endif /* functions.h */