⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 神经网络bp算法(c程序).htm

📁 BP算法,没有太多的说明
💻 HTM
📖 第 1 页 / 共 2 页
字号:
for(j=0;j<HN;J++)<BR />&nbsp; {<BR>&nbsp;&nbsp; sigma+=V[k][j]*H[k];<BR>&nbsp; 
}<BR>&nbsp;Y[k]=sigma-YU_ON[k];<BR>&nbsp;O[k]=1.0/(1.0+exp(-Y[k]));<BR>&nbsp;}<BR>return 
1;<BR>}</P>
<P><BR>int Err_O_H(int m)<BR>{int k;<BR>double abs_err[ON];<BR>double 
sqr_err=0;<BR>for (k=0;k<ON;K++)<BR />&nbsp; {<BR>&nbsp; 
abs_err[k]=T[k]-O[k];<BR>&nbsp; sqr_err+=(abs_err[k])*(abs_err[k]);<BR>&nbsp; 
d_err[k]=abs_err[k]*O[k]*(1.0-O[k]);<BR>&nbsp; err_m[m]=sqr_err/2;<BR>&nbsp; 
}<BR>return 1;<BR>}</P>
<P>
<P>double e_err[HN];<BR>int Err_H_I()<BR>{<BR>&nbsp;int j,k;<BR>&nbsp;double 
sigma;<BR>&nbsp;for(j=0;j<HN;J++)<BR />&nbsp;{<BR>&nbsp; sigma=0.0;<BR>&nbsp; 
for(k=0;k<ON;K++)<BR />&nbsp; {<BR>&nbsp;&nbsp; 
sigma=d_err[k]*V[k][j];<BR>&nbsp;&nbsp; 
}<BR>&nbsp;e_err[j]=sigma*H[j]*(1-H[j]);<BR>&nbsp;}<BR>return 1;<BR>}</P>
<P><BR>saveWV(int m)<BR>{int i;<BR>&nbsp;int ii;<BR>&nbsp;int j;<BR>&nbsp;int 
jj;<BR>&nbsp;for(i=0;i<HN;I++)<BR />&nbsp; {<BR>&nbsp;&nbsp; 
for(j=0;j<IN;J++)<BR />&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp; 
Old_WV[m].old_W[i][j] = W[i][j];<BR>&nbsp;&nbsp;&nbsp; }<BR>&nbsp; 
}<BR>&nbsp;for(ii=0;ii<ON;II++)<BR />&nbsp; {<BR>&nbsp;&nbsp; 
for(jj=0;jj<HN;JJ++)<BR />&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp; 
Old_WV[m].old_V[ii][jj] = V[ii][jj];<BR>&nbsp;&nbsp;&nbsp; }<BR>&nbsp; 
}<BR>return 1;<BR>}</P>
<P><BR>int Delta_O_H(int 
n)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
/*(int m,int n)*/<BR>{int k,j;<BR>&nbsp;if(n&lt;1)&nbsp; /*n&lt;=1*/<BR>&nbsp; 
{<BR>&nbsp;&nbsp; for (k=0;k<ON;K++)<BR />&nbsp;&nbsp;&nbsp; 
{<BR>&nbsp;&nbsp;&nbsp;&nbsp; for (j=0;j<HN;J++)<BR 
/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
V[k][j]=V[k][j]+a*d_err[k]*H[j];<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
}<BR>&nbsp;&nbsp;&nbsp;&nbsp; YU_ON[k]+=a*d_err[k];<BR>&nbsp;&nbsp;&nbsp; 
}<BR>&nbsp; }<BR>&nbsp;else if(n&gt;1)<BR>&nbsp; {<BR>&nbsp;&nbsp; for 
(k=0;k<ON;K++)<BR />&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp; for 
(j=0;j<HN;J++)<BR />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
V[k][j]=V[k][j]+a*d_err[k]*H[j]+alpha*(V[k][j]-Old_WV[(n-1)].old_V[k][j]);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
}<BR>&nbsp;&nbsp;&nbsp;&nbsp; YU_ON[k]+=a*d_err[k];<BR>&nbsp;&nbsp;&nbsp; 
}<BR>&nbsp; }<BR>return 1;<BR>}</P>
<P>Delta_H_I(int 
n)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
/*(int m,int n)*/<BR>{ int i,j;</P>
<P>if(n&lt;=1)&nbsp;&nbsp; /*n&lt;=1*/<BR>&nbsp;{<BR>&nbsp; for 
(j=0;j<HN;J++)<BR />&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp; for (i=0;i<IN;I++)<BR 
/>&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
W[j][i]=W[j][i]+b*e_err[j]*P[i];<BR>&nbsp;&nbsp;&nbsp;&nbsp; 
}<BR>&nbsp;&nbsp;&nbsp; YU_HN[j]+=b*e_err[j];<BR>&nbsp;&nbsp; 
}<BR>&nbsp;}<BR>else if(n&gt;1)<BR>&nbsp;{<BR>&nbsp; for(j=0;j<HN;J++)<BR 
/>&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp; for(i=0;i<IN;I++)<BR 
/>&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
W[j][i]=W[j][i]+b*e_err[j]*P[i]+alpha*(W[j][i]-Old_WV[(n-1)].old_W[j][i]);<BR>&nbsp;&nbsp;&nbsp;&nbsp; 
}<BR>&nbsp;&nbsp;&nbsp; YU_HN[j]+=b*e_err[j];<BR>&nbsp;&nbsp; 
}<BR>&nbsp;}<BR>return 1;<BR>}</P>
<P>
<P>double Err_Sum()<BR>{int m;<BR>double total_err=0;<BR>for(m=0;m<N;M++)<BR 
/>&nbsp;{<BR>&nbsp; total_err+=err_m[m];<BR>&nbsp;}<BR>return 
total_err;<BR>}</P>
<P>
<P>void savequan()<BR>{ int i,j,k;<BR>&nbsp; int ii,jj,kk;</P>
<P>if((fp=fopen("f:\\bp\\权值.txt","a"))==NULL)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
/*save the result at f:\hsz\bpc\*.txt*/<BR>&nbsp;{<BR>&nbsp; printf("Cannot open 
file strike any key exit!");<BR>&nbsp; getch();<BR>&nbsp; 
exit(1);<BR>&nbsp;}</P>
<P>fprintf(fp,"Save the result of “权值”(quanzhi) as 
follows:\n");<BR>for(i=0;i<HN;I++)<BR />&nbsp;{<BR>&nbsp; for(j=0;j<IN;J++)<BR 
/>&nbsp; 
fprintf(fp,"W[%d][%d]=%f\n",i,j,W[i][j]);<BR>&nbsp;}<BR>fprintf(fp,"\n");<BR>for(ii=0;ii<ON;II++)<BR 
/>&nbsp;{<BR>&nbsp; for(jj=0;jj<HN;JJ++)<BR />&nbsp; 
fprintf(fp,"V[%d][%d]=%f\n",ii,jj,V[ii][jj]);<BR>&nbsp; 
}<BR>fclose(fp);<BR>printf("\nThe result of “权值.txt”(quanzhi) has been saved 
successfully!\nPress any key to continue...");<BR>getch();</P>
<P><BR>if((fp=fopen("f:\\bp\\阈值.txt","a"))==NULL)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
/*save the result at f:\hsz\bpc\*/<BR>&nbsp;{<BR>&nbsp; printf("Cannot open file 
strike any key exit!");<BR>&nbsp; getch();<BR>&nbsp; 
exit(1);<BR>&nbsp;}<BR>fprintf(fp,"Save the result of “输出层的阈值”(huozhi) as 
follows:\n");<BR>&nbsp;for(k=0;k<ON;K++)<BR />&nbsp;&nbsp; 
fprintf(fp,"YU_ON[%d]=%f\n",k,YU_ON[k]);</P>
<P>fprintf(fp,"\nSave the result of “隐层的阈值为”(huozhi) as 
follows:\n");<BR>&nbsp;for(kk=0;kk<HN;KK++)<BR />&nbsp; 
fprintf(fp,"YU_HN[%d]=%f\n",kk,YU_HN[kk]);</P>
<P>fclose(fp);<BR>printf("\nThe result of “阈值.txt”(huozhi) has been saved 
successfully!\nPress any key to continue...");<BR>getch();<BR>}</P>
<P>/**********************/<BR>/**程序入口,即主程序**/<BR>/**********************/</P>
<P>void main()<BR>{double Pre_error;<BR>double sum_err;<BR>int study;<BR>int 
flag;<BR>flag=30000;<BR>a=0.7;<BR>b=0.7;<BR>alpha=0.9;<BR>study=0;<BR>Pre_error=0.0001;/*实际值为Pre_error=0.0001;*/</P>
<P>Start_Show();<BR>GetTrainingData();<BR>initial();</P>
<P>do<BR>&nbsp;{int m;<BR>&nbsp; ++study;<BR>&nbsp; for(m=0;m<N;M++)<BR 
/>&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp; input_P(m);<BR>&nbsp;&nbsp;&nbsp; 
input_T(m);<BR>&nbsp;&nbsp;&nbsp; H_I_O();<BR>&nbsp;&nbsp;&nbsp; 
O_I_O();<BR>&nbsp;&nbsp;&nbsp; Err_O_H(m);<BR>&nbsp;&nbsp;&nbsp; 
Err_H_I();<BR>&nbsp;&nbsp;&nbsp; 
saveWV(m);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
/****************/<BR>&nbsp;&nbsp;&nbsp; 
Delta_O_H(m);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
/*(m,study)*/<BR>&nbsp;&nbsp;&nbsp; 
Delta_H_I(m);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
/*(m,study)*/<BR>&nbsp;&nbsp; }<BR>&nbsp; sum_err=Err_Sum();<BR>&nbsp; 
printf("sum_err=%f\n",sum_err);<BR>&nbsp; 
printf("Pre_error=%f\n\n",Pre_error);</P>
<P>&nbsp; if(study&gt;flag)<BR>&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp; 
printf("\n*******************************\n");<BR>&nbsp;&nbsp;&nbsp; printf("The 
program is ended by itself because of error!\nThe learning times is 
surpassed!\n");<BR>&nbsp;&nbsp;&nbsp; 
printf("*****************************\n");<BR>&nbsp;&nbsp;&nbsp; 
getch();<BR>&nbsp;&nbsp;&nbsp; break;<BR>&nbsp;&nbsp; }</P>
<P>&nbsp;}while (sum_err&gt;Pre_error);</P>
<P>printf("\n****************\n");<BR>printf("\nThe program have studyed for 
[%d] 
times!\n",study);<BR>printf("\n****************\n");<BR>savequan();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
/*save the results*/<BR>End_Show();<BR>}</P>
<P>==========================</P>
<P>权值.txt</P>
<P>{Save the result of “权值”(quanzhi) as 
follows:<BR>W[0][0]=0.350578<BR>W[0][1]=-1.008697<BR>W[0][2]=-0.962250<BR>W[1][0]=0.055661<BR>W[1][1]=-0.372367<BR>W[1][2]=-0.890795<BR>W[2][0]=0.129752<BR>W[2][1]=-0.332591<BR>W[2][2]=-0.521561</P>
<P>V[0][0]=-2.932654<BR>V[0][1]=-3.720583<BR>V[0][2]=-2.648183<BR>V[1][0]=2.938970<BR>V[1][1]=1.633281<BR>V[1][2]=1.944077</P>
<P>}</P>
<P>阈值.txt</P>
<P>{Save the result of “输出层的阈值”(huozhi) as 
follows:<BR>YU_ON[0]=-4.226843<BR>YU_ON[1]=1.501791</P>
<P>Save the result of “隐层的阈值为”(huozhi) as 
follows:<BR>YU_HN[0]=-0.431459<BR>YU_HN[1]=0.452127<BR>YU_HN[2]=0.258449</P>
<P>}</P>
<P>==================================</P>
<P>以上程序为VC++的程序改制而成!</P>
<P>欢迎提宝贵意见!</P>
<P>欢迎交流学习经验!</P>
<P><IMG alt=" " src="神经网络BP算法(C程序).files/mailaddr.gif" 
onload="function anonymous()&#13;&#10;{&#13;&#10;function anonymous()&#13;&#10;{&#13;&#10;function anonymous()&#13;&#10;{&#13;&#10;function anonymous()&#13;&#10;{&#13;&#10;function anonymous()&#13;&#10;{&#13;&#10; img_auto_size(this,450,true);&#13;&#10;}&#13;&#10;}&#13;&#10;}&#13;&#10;}&#13;&#10;}" 
align=baseline></P>
<P></P>
<P class=diaryFoot>【作者: <A 
onclick="window.open('http://publishblog.blogchina.com/blog/postMessage.b?receiver=194821','发送短消息','width=520, height=455')" 
href="javascript:void(0);">叶落随风</A>】【访问统计:
<SCRIPT language=JavaScript src="神经网络BP算法(C程序).files/PageServlet"></SCRIPT>
】【2006年04月3日 星期一 21:55】【 <A 
href="javascript:void(keyit=window.open('http://blogmark.blogchina.com/jsp/key/quickaddkey.jsp?k='+encodeURI('神经网络BP算法(C程序)')+'&amp;u='+encodeURI('http://hshu.blogchina.com/hshu/4806075.html')+'&amp;c='+encodeURI(''),'keyit','scrollbars=no,width=500,height=430,status=no,resizable=yes'));keyit.focus();">加入博采</A>】【<A 
href="javascript:window.print();">打印</A>】 </TD></P></DIV>
<DIV class=operation><A name=trackback>
<H3>Trackback</H3></A>
<P class=trackback>你可以使用这个链接引用该篇文章 
http://publishblog.blogchina.com/blog/tb.b?diaryID=4806075 </P></DIV>
<DIV class=operation><A name=comment>
<H3>回复</H3></A>
<TABLE cellSpacing=0 cellPadding=0 width=700 border=0>
  <TBODY></TBODY></TABLE></DIV>
<DIV class=operation>
<TABLE class=comment cellSpacing=0 cellPadding=0 width=700 border=0>
  <FORM id=replyForm method=post><INPUT type=hidden value=193619 name=blogID> 
  <INPUT type=hidden value=4806075 name=diaryID> <INPUT type=hidden value=hshu 
  name=blogDomino>
  <SCRIPT>
if(getCookie('userID') == null){        
document.write('<tr><td width="70">发布人:</td>');
document.write('<td width="150"> <input name="remark.authorNameFUI" type="text" size="20" class="inputStyle" maxlength="20"></td>');
document.write('<td width="70">邮箱:</td>');
document.write('<td width="435"> <input name="remark.authorEmail" type="text" size="20" class="inputStyle" maxlength="40"></td>');
document.write('</tr><tr><td>主 页:</td>');
document.write('<td colspan="3"> <input name="remark.authorURL" type="text" class="inputStyle" value="HTTP://" size="63" maxlength="100"></td></tr>');
}else{
document.write('<input type="hidden" name="remark.authorNameFUI" value="Blogchina网友">');
}
</SCRIPT>
   
  <TBODY>
  <TR>
    <TD width=70>验证码:</TD>
    <TD><INPUT class=inputStyle maxLength=4 name=validateCode></TD>
    <TD>&nbsp;&nbsp;<IMG src="神经网络BP算法(C程序).files/getValidateImg.gif" 
    border=0></TD></TR>
  <TR align=left>
    <TD colSpan=4>评论内容:<BR><TEXTAREA class=textStyle id=remark name=remark.remarkFUI rows=8 cols=60>          </TEXTAREA> 
    </TD></TR>
  <TR align=left>
    <TD colSpan=4>              <INPUT onclick=reply() type=button value=提交>   
<INPUT type=reset value=重置> </TD></TR></FORM></TBODY></TABLE></DIV></DIV>
<SCRIPT src="神经网络BP算法(C程序).files/extend3.js" type=text/javascript></SCRIPT>

<DIV id=footer><A href="http://blog.bokee.com/">2003-2004 BOKEE.COM All rights 
reserved</A><BR><A href="http://www.blogdriver.com/">Powered by BlogDriver 
2.1</A> </DIV></BODY></HTML>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -