云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > AI实验讲义

AI实验讲义

  • 62 次阅读
  • 3 次下载
  • 2025/5/7 17:01:03

double CBpNet::randab(double a, double b)

{ //注意,如果应用矩阵库,头文件matlib.h对rand()函数重新定义,只产生(0,1) //之间的随机数

return((b-a)*rand()+a); }

//将数据转化到(0,1)区间 void CBpNet::normalize() {

int i,j;

//输入数据范围

mInputNormFactor=scope(mSampleInput); //目标数据范围

mTargetNormFactor=scope(mSampleTarget);

for(i=1;i<=mSampleInput.rows();i++) for(j=1;j<=mSampleInput.cols();j++)

mSampleInput.r(i,j)=(mSampleInput.r(i,j)-mInputNormFactor.r(j,1))/(mInputNormFactor.r(j,2)-mInputNormFactor.r(j,1));

for(i=1;i<=mSampleTarget.rows();i++) for(j=1;j<=mSampleTarget.cols();j++)

mSampleTarget.r(i,j)=(mSampleTarget.r(i,j)-mTargetNormFactor.r(j,1))/(mTargetNormFactor.r(j,2)-mTargetNormFactor.r(j,1)); }

//前向计算

void CBpNet::forward(int iSample) {//根据第iSample个样本,前向计算 if(iSample<1||iSample>mSampleInput.rows()){ MessageBox(NULL,\无此样本数据:索引出界!\无此样本数据:索引出界!\ return; } int i,j; double sum=0.0; //输入层数据 for(i=1;i<=iInput;i++) mInput.r(i)=mSampleInput.r(iSample,i);

37

//隐层数据 for(j=1;j<=iHidden;j++){ sum=0.0; for(i=1;i<=iInput;i++) sum+=mInput.r(i)*mWeighti.r(i,j); sum-=mThresholdi.r(j); mHidden.r(j)=1.0/(1.0+exp(-sum)); } //输出数据 for(j=1;j<=iOutput;j++){ sum=0.0; for(i=1;i<=iHidden;i++) sum+=mHidden.r(i)*mWeighto.r(i,j); sum-=mThresholdo.r(j); mOutput.r(j)=1.0/(1.0+exp(-sum)); } }

//后向反馈

void CBpNet::backward(int iSample) { if(iSample<1||iSample>mSampleInput.rows()){ MessageBox(NULL,\无此样本数据:索引出界!\无此样本数据:索引出界!\ return; } int i,j;

//输出误差 for(i=1;i<=iOutput;i++) mOutputDeltas.r(i)=mOutput.r(i)*(1-mOutput.r(i))*(mSampleTarget.r(iSample,i)-mOutput.r(i)); //隐层误差 double sum=0.0; for(j=1;j<=iHidden;j++){ sum=0.0; for(i=1;i<=iOutput;i++)

38

sum+=mOutputDeltas.r(i)*mWeighto.r(j,i); mHiddenDeltas.r(j)=mHidden.r(j)*(1-mHidden.r(j))*sum; } //更新隐层-输出权重 double dblChange; for(j=1;j<=iHidden;j++) for(i=1;i<=iOutput;i++){ dblChange=mOutputDeltas.r(i)*mHidden.r(j); mWeighto.r(j,i)=mWeighto.r(j,i)+dblLearnRate2*dblChange+dblMomentumFactor*mChangeo.r(j,i); mChangeo.r(j,i)=dblChange; } //更新输入-隐层权重 for(i=1;i<=iInput;i++) for(j=1;j<=iHidden;j++){ dblChange=mHiddenDeltas.r(j)*mInput.r(i);

mWeighti.r(i,j)=mWeighti.r(i,j)+dblLearnRate1*dblChange+dblMomentumFactor*mChangei.r(i,j); mChangei.r(i,j)=dblChange; } //修改阙值 for(j=1;j<=iOutput;j++) mThresholdo.r(j)-=dblLearnRate2*mOutputDeltas.r(j); for(i=1;i<=iHidden;i++) mThresholdi.r(i)-=dblLearnRate1*mHiddenDeltas.r(i); //计算误差 dblErr=0.0; for(i=1;i<=iOutput;i++) dblErr+=0.5*(mSampleTarget.r(iSample,i)-mOutput.r(i))*(mSampleTarget.r(iSample,i)-mOutput.r(i)); }

//求数据列的范围

Mm CBpNet::scope(Mm mData) {Mm mScope;

mScope=zeros(mData.cols(),2); double min,max;

39

for(int i=1;i<=mData.cols();i++){ min=max=mData.r(1,i); for(int j=1;j<=mData.rows();j++){ if(mData.r(j,i)>=max) max=mData.r(j,i); if(mData.r(j,i)<=min) min=mData.r(j,i); } if(min==max) min=0.0; mScope.r(i,1)=min; mScope.r(i,2)=max; }

return(mScope); }

//显示矩阵数据,方便调试 void CBpNet::display(Mm data) {CString strData,strTemp; int i=1,j=1;

for(i=1;i<=data.rows();i++){ for(j=1;j<=data.cols();j++){ strTemp.Format(\ strData+=strTemp; } strData=strData+\ }

::MessageBox(NULL,strData,\ }

void CBpNet::Serialize(CArchive &ar) {CObject::Serialize(ar); ///////////////////////////////////// if(ar.IsStoring()){ int i,j; double dblData; CString strTemp=\ ar<

40

搜索更多关于: AI实验讲义 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

double CBpNet::randab(double a, double b) { //注意,如果应用矩阵库,头文件matlib.h对rand()函数重新定义,只产生(0,1) //之间的随机数 return((b-a)*rand()+a); } //将数据转化到(0,1)区间 void CBpNet::normalize() { int i,j; //输入数据范围 mInputNormFactor=scope(mSampleInput); //目标数据范围 mTargetNormFactor=scope(mSampleTarget); for(i=1;i<=mSampleInput.rows();i++) for(j=1;j<=

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com