c++BP算法源程序3.doc

上传人:新** 文档编号:543534334 上传时间:2023-02-28 格式:DOC 页数:7 大小:36.51KB
返回 下载 相关 举报
c++BP算法源程序3.doc_第1页
第1页 / 共7页
c++BP算法源程序3.doc_第2页
第2页 / 共7页
c++BP算法源程序3.doc_第3页
第3页 / 共7页
c++BP算法源程序3.doc_第4页
第4页 / 共7页
c++BP算法源程序3.doc_第5页
第5页 / 共7页
点击查看更多>>
资源描述

《c++BP算法源程序3.doc》由会员分享,可在线阅读,更多相关《c++BP算法源程序3.doc(7页珍藏版)》请在金锄头文库上搜索。

1、下面是BPNET.CPP源文件#=BpNet.cpp : implementation file=/人工神经网络BP算法/1、动态改变学习速率/2、加入动量项/3、运用了Matcom4.5的矩阵运算库(可免费下载,头文件matlib.h),/ 方便矩阵运算,当然,也可自己写矩阵类/4、可暂停运算/5、可将网络以文件的形式保存、恢复/作者:同济大学材料学院 张纯禹/email:chunyu_ BpNet.h#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE = _FILE_;#endif/ CBpNetI

2、MPLEMENT_SERIAL( CBpNet, CObject, 1 )CBpNet:CBpNet()initM(MATCOM_VERSION);/启用矩阵运算库CBpNet:CBpNet()exitM();delete this;/ CBpNet message handlers/创建新网络void CBpNet:Create(Mm mInputData, Mm mTarget, int iInput, int iHidden, int iOutput) int i,j;mSampleInput=zeros(mInput.rows(),mInput.cols();mSampleTarget

3、=zeros(mTarget.rows(),mTarget.cols();mSampleInput=mInputData;mSampleTarget=mTarget;this-iInput=iInput;this-iHidden=iHidden;this-iOutput=iOutput;/创建计算用的单个样本矩阵mInput=zeros(1,this-iInput);mHidden=zeros(1,this-iHidden);mOutput=zeros(1,this-iOutput);/创建权重矩阵,并赋初值mWeighti=zeros(this-iInput,this-iHidden);mW

4、eighto=zeros(this-iHidden,this-iOutput); /赋初值for(i=1;iiInput;i+) for(j=1;jiHidden;j+) mWeighti.r(i,j)=randab(-1.0,1.0);for(i=1;iiHidden;i+) for(j=1;jiOutput;j+) mWeighto.r(i,j)=randab(-1.0,1.0);/创建阙值矩阵,并赋值mThresholdi=zeros(1,this-iHidden);for(i=1;iiHidden;i+) mThresholdi.r(i)=randab(-1.0,1.0);mThres

5、holdo=zeros(1,this-iOutput);for(i=1;iiOutput;i+) mThresholdo.r(i)=randab(-1.0,1.0);/创建权重变化矩阵mChangei=zeros(this-iInput,this-iHidden);mChangeo=zeros(this-iHidden,this-iOutput);mInputNormFactor=zeros(iInput,2);mTargetNormFactor=zeros(iOutput,2);/误差矩阵 mOutputDeltas=zeros(iOutput); mHiddenDeltas=zeros(i

6、Hidden);/学习速率赋值dblLearnRate1=0.5;dblLearnRate2=0.5;dblMomentumFactor=0.95;m_isOK=false;m_IsStop=false;dblMse=1.0e-6;/误差限dblError=1.0;lEpochs=0;/根据已有的网络进行预测Mm CBpNet:simulate(Mm mData)int i,j;Mm mResult;Mm data=zeros(mData.rows(),mData.cols();data=mData;if(mData.cols()!=iInput):MessageBox(NULL,输入数据变量

7、个数错误!,输入数据变量个数错误!,MB_OK);return mResult;mResult=zeros(data.rows(),iOutput); /正规化数据for(i=1;i=data.rows();i+) for(j=1;j=data.cols();j+) data.r(i,j)=(data.r(i,j)-mInputNormFactor.r(j,1)/(mInputNormFactor.r(j,2)-mInputNormFactor.r(j,1);/计算 int iSample; Mm mInputdata,mHiddendata,mOutputdata; mInputdata=z

8、eros(1,iInput); mHiddendata=zeros(1,iHidden); mOutputdata=zeros(1,iOutput); double sum=0.0; for(iSample=1;iSample=data.rows();iSample+) /输入层数据 for(i=1;i=iInput;i+) mInputdata.r(i)=data.r(iSample,i); /隐层数据 for(j=1;j=iHidden;j+) sum=0.0; for(i=1;i=iInput;i+) sum+=mInputdata.r(i)*mWeighti.r(i,j); sum-=

9、mThresholdi.r(j); mHiddendata.r(j)=1.0/(1.0+exp(-sum); /输出数据 for(j=1;j=iOutput;j+) sum=0.0; for(i=1;i=iHidden;i+) sum+=mHiddendata.r(i)*mWeighto.r(i,j); sum-=mThresholdo.r(j); mOutputdata.r(j)=1.0/(1.0+exp(-sum); /转换 for(j=1;jdblMse&!m_IsStop) dblTotal=0.0; for(iSample=1;iSample1.04)/动态改变学习速率 dblLearnR

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 社会民生

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号