%BP neural network加动量项的算法
clear
inputNums=5;%输入节点数
outputNums=5;%输出节点数
hideNums=15;%隐层节点数
maxcount=10000;%最大训练次数
samplenum=7;%总样本组数
precision=0.001;%精度
alpha=0.5;%学习率设定值
a=0.5;%动量系数设定值
count=1;
error=zeros(1,count);
errorp=zeros(1,samplenum);
v=rand(inputNums,hideNums);
deltv=zeros(inputNums,hideNums);
dv=zeros(inputNums,hideNums);
st1=zeros(1,hideNums);
w=rand(hideNums,outputNums);
deltw=zeros(hideNums,outputNums);
dw=zeros(hideNums,outputNums);
st2=zeros(1,outputNums);
%samplelist=[1,0,0;0,1,0;0,0,1];
%expectlist=[1,0,0;0,1,0;0,0,1];
samplelist=[0,0.8823,0,1,0;
0.9910,0.0176,0.9230,0,0.8174;
1,1,0.9030,1,0.9588;
0.0020,0.8823,0.0437,1,0.1582;
1,0.8823,0.3569,1,0.6622;
0.9535,0.0963,0.009,0.5386,0.0593;
1,0.9983,0,1,0];
expectlist=[1,0,0,0,0,0,0,0,0;
0,1,0,0,0,0,0,0,0;
0,0,1,0,0,0,0,0,0;
0,0,0,1,0,0,0,0,0;
0,0,0,0,1,0,0,0,0;
0,0,0,0,0,1,0,0,0;
0,0,0,0,0,0,1,0,0];
while (count<=maxcount)
c=1;
while (c<=samplenum)
for k=1:outputNums
d(k)=expectlist(c,k);%获得期望输出的向量
end
for i=1:inputNums
x(i)=samplelist(c,i);%获得输入的向量(数据)
end
%Forward();
for j=1:hideNums
net=0.0;
for i=1:inputNums
net=net+x(i)*v(i,j);
end
net=net-st1(j);
y(j)=1/(1+exp(-net));
end
for k=1:outputNums
net=0.0;
for j=1:hideNums
net=net+y(j)*w(j,k);
end
net=net-st2(k);
o(k)=1/(1+exp(-net));
end
%BpError(c);
errortmp=0.0;
for k=1:outputNums
errortmp=errortmp+(d(k)-o(k))^2;
end
errorp(c)=0.5*errortmp;
%end
%Backward();
for k=1:outputNums
yitao(k)=(d(k)-o(k))*o(k)*(1-o(k));
end
for j=1:hideNums
tem=0.0;
for k=1:outputNums
tem=tem+yitao(k)*w(j,k);
end
yitay(j)=tem*y(j)*(1-y(j));
end
%调整各层权值
for j=1:hideNums
for k=1:outputNums
deltw(j,k)=alpha*yitao(k)*y(j);
w(j,k)=w(j,k)+deltw(j,k)+a*dw(j,k);
dw(j,k)=deltw(j,k);
end
end
for k=1:outputNums
st2(k)=st2(k)+alpha*yitao(k);
end
for i=1:inputNums
for j=1:hideNums
deltv(i,j)=alpha*yitay(j)*x(i);
v(i,j)=v(i,j)+deltv(i,j)+a*dv(i,j);
dv(i,j)=deltv(i,j);
end
end
for j=1:hideNums
st1(j)=st1(j)+alpha*yitay(j);
end
%end
c=c+1;
end
double tmp;
tmp=0.0;
for i=1:samplenum
tmp=tmp+errorp(i)*errorp(i);
end
tmp=tmp/c;
error(count)=sqrt(tmp);
if (error(count)<precision)
break;
end
count=count+1;%训练次数加1
end
p=1:count-1;
plot(p,error(p),'-');
zhaojj666
- 粉丝: 2
- 资源: 25
最新资源
- 基于Neo4j图数据库的医疗知识图谱智能问答机器人详细文档+全部资料+优秀项目.zip
- 基于rasa框架的知识图谱问答详细文档+全部资料+优秀项目.zip
- 基于streamlit+neo4j构建的简易知识图谱问答系统详细文档+全部资料+优秀项目.zip
- 基于大语言模型API(本地或商用API)的外挂知识库问答系统(附neo4j实现知识图谱)详细文档+全部资料+优秀项目.zip
- 基于大模型 RAG 知识库与知识图谱的问答平台。详细文档+全部资料+优秀项目.zip
- 基于农业领域知识图谱的构建,包括数据爬取(百度百科)、数据分类、利用结构化数据生成三元组、非基于依存句法分析(主谓关系等)的关系抽取和利用neo4j生成可视化知
- 基于英雄联盟知识图谱的问答详细文档+全部资料+优秀项目.zip
- 基于知识图谱的出版物检索系统详细文档+全部资料+优秀项目.zip
- 基于突发事件本体模型和知识图谱的构建详细文档+全部资料+优秀项目.zip
- 基于知识图谱的电影智能问答。neo4j构建电影图谱,spark ml完成问答意图分类,将问答语句转为cypher查询语句完成匹配查询。详细文档+全部资料+优秀项目.zip
- 基于知识图谱的单轮对话系统详细文档+全部资料+优秀项目.zip
- 基于知识图谱的古诗词问答系统,数据库使用neo4j详细文档+全部资料+优秀项目.zip
- 基于知识图谱的会展知识问答系统详细文档+全部资料+优秀项目.zip
- 基于知识图谱的科技政策管理系统详细文档+全部资料+优秀项目.zip
- 基于知识图谱的林业法律法规问答详细文档+全部资料+优秀项目.zip
- 基于知识图谱的推荐算法-KGCN实现详细文档+全部资料+优秀项目.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
- 1
- 2
前往页