- 1、本文档共5页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
_人工神经网络习题解答.doc
第九章 人工神经网络
9.1答:
(1)误差纠正学习;(wkj = (ek(n)xj(n);yk(n)为输入xk(n)时,神经元k在n时刻的实际输出,dk(n)表示应有的输出(可由训练样本给出);其中η为学习步长,这就是通常所说的误差纠正学习规则(或称delta学习规则)。
(2)Hebb学习;(wkj(n) = F(yk(n),xj(n));当某一突触(连接)两端的神经元同步激活(同为激活或同为抑制)时,该连接的强度应为增强,反之应减弱;由于Δwkj与yk(n),xj(n)的相关成比例,有时称为相关学习规则。
(3)竞争(Competitive)学习;
若神经元j竞争获胜
若神经元j竞争失败;在竞争学习时,网络各输出单元互相竞争,最后达到只有一个最强者激活,最常见的一种情况是输出神经元之间有侧向抑制性连接,这样原来输出单元中如有某一单元较强,则它将获胜并抑制其它单元,最后只有此强者处于激活状态。
9.2答:略
9.3答:B-P算法的学习过程如下:
(1)选择一组训练样例,每一个样例由输入信息和期望的输出结果两部分组成。
(2)从训练样例集中取一样例,把输入信息输入到网络中。
(3)分别计算经神经元处理后的各层节点的输出。
(4)计算网络的实际输出和期望输出的误差。
(5)从输出层反向计算到第一个隐层,并按照某种能使误差向减小方向发展的原则,调整网络中各神经元的连接权值。
(6)对训练样例集中的每一个样例重复(3)—(5)的步骤,直到对整个训练样例集的误差达到要求时为止。
文件头:
#include stdio.h
#include stdlib.h
#include math.h
#include UTLab.h
//BP神经网络
#define n1 7 //输入节点数
#define n2 11 //中间层节点个数
#define n3 5 //输出节点数
#define m 400 //学习次数
void initialization(){}
float bpnet(float tension, float inthick,float outthick, float meng, float tan,float ping,float tu)
{
float in1[n1];
float out1[n2];
float out2[n3];
float w1[n2][n1];
float w2[n3][n2];
float a1[n2];
float a2[n3];
float t[n3];
float df1[n2];
float df2[n3];
float s2[n3];
float s1[n2];
float w[n2][n3];
float z[n2][n3];
float a=0.5;
int i=0;
int j=0;
int k=0;
int n=0;
in1[1]=tension;
in1[2]=inthick;
in1[3]=outthick;
in1[4]=meng;
in1[5]=tan;
in1[6]=ping;
in1[7]=tu;
initialization();
for(n=1;n=m;k++){
for(i=1;i=n2;i++){
for(j=1;j=n1;j++){
a1[j]=a1[j]+w1[i][j]*in1[j];
out1[j]=sigmoid(a1[j]);
}
}
for(i=1;i=n3;i++){
for(j=1;j=n2;j++){
a2[j]=a2[j]+w2[i][j]
文件尾:
*in1[j];
out2[j]=a2[j];
}
}
for(i=1;i=n3;i++){ //计算敏感度,更新权值
df2[i]=1;
s2[i]=-2*(t[i]-out2[i]);
for(j=1;j=n2;j++){
w2[i][j]=w2[i][j]+a*out1[j];
}
}
for(i=1;i=n3;i++){
for(j=1;j=n2;j++){
w[j][i]=w2[i][j];
}
}
for(j=1;j=n2;j++){
df1[j]=(1-out1[j])*out1[j];
s1[j]=0;
for(i=1;i=n3;i++){
z[j][i]=df1[j]*w[j][i];
s1[j]=s1[j]+z[j][i]*s2[
文档评论(0)