C# BP程序Word文件下载.docx
- 文档编号:7960012
- 上传时间:2023-05-09
- 格式:DOCX
- 页数:17
- 大小:16.61KB
C# BP程序Word文件下载.docx
《C# BP程序Word文件下载.docx》由会员分享,可在线阅读,更多相关《C# BP程序Word文件下载.docx(17页珍藏版)》请在冰点文库上搜索。
deltaW2=newdouble[Nh,No];
betaO=newdouble[k,No];
betaH=newdouble[k,Nh];
Ohidden=newdouble[k,Nh];
Ooutput=newdouble[k,No];
thrH=newdouble[Nh];
thrO=newdouble[No];
deltathrH=newdouble[Nh];
deltathrO=newdouble[No];
//p=newdouble[k];
}
protectedList<
List<
double>
>
m_XExamples;
//输入训练样本
m_YExamples;
//输出训练样本
publicboolXY()
//初始化样本,输入初始化为1,输出初始化为0
m_XExamples=newList<
();
m_YExamples=newList<
for(inti=0;
i<
k;
i++)
List<
row=newList<
for(intj=0;
j<
Ni;
j++)
row.Add(1.0);
m_XExamples.Add(row);
row1=newList<
No;
row1.Add(0.0);
m_YExamples.Add(row1);
returntrue;
publicboolGet_XExamValue(intexamIndex,intindex,refdoublea)
if(examIndex<
1||examIndex>
k)
returnfalse;
if(index<
1||index>
Ni)
a=m_XExamples[examIndex-1][index-1];
//设置输入样本值
publicboolSet_XExamValue(intexamIndex,intindex,doubleexamValue)
m_XExamples[examIndex-1][index-1]=examValue;
//获得输出样本
publicboolGet_YExamValue(intexamIndex,intindex,refdoublea)
No)
a=m_YExamples[examIndex-1][index-1];
//设置输出样本值
publicboolSet_YExamValue(intexamIndex,intindex,doubleexamValue)
m_YExamples[examIndex-1][index-1]=examValue;
m_TXExamples;
//输入测试样本
m_TYExamples;
//输出测试样本
publicboolTXY()
m_TXExamples=newList<
m_TYExamples=newList<
Tk;
m_TXExamples.Add(row);
m_TYExamples.Add(row1);
publicboolGet_TXExamValue(intexamIndex,intindex,refdoublea)
Tk)
a=m_TXExamples[examIndex-1][index-1];
publicboolSet_TXExamValue(intexamIndex,intindex,doubleexamValue)
m_TXExamples[examIndex-1][index-1]=examValue;
publicboolInit()
inti,j;
Randomrd=newRandom();
for(i=0;
for(j=0;
Nh;
W1[i,j]=rd.NextDouble()-0.5;
//%12/10.0-1.2;
W2[i,j]=rd.NextDouble()-0.5;
//%12/10.0-1.2;
i++)thrH[i]=rd.NextDouble()-0.5;
i++)thrO[i]=rd.NextDouble()-0.5;
doublesigmoid(doublex)
return1.0/(1.0+Math.Exp(-a*x));
doublesum1(intk,inth,inti)
doublet=0;
intj;
switch(h)
case1:
t+=W1[j,i]*m_XExamples[k][j];
t-=thrH[i];
break;
case2:
t+=W2[j,i]*Ohidden[k,j];
t-=thrO[i];
default:
returnt;
doublesum2(intk,inth,inti)
t+=W2[i,j]*Ooutput[k,j]*(1.0-Ooutput[k,j])*betaO[k,j];
voidforward(intk)
doubleerrorsum=0;
Ohidden[k,i]=sigmoid(sum1(k,1,i));
Ooutput[k,i]=sigmoid(sum1(k,2,i));
if(m_YExamples[k][i]!
=0)
P=Math.Abs((m_YExamples[k][i]-Ooutput[k,i])/m_YExamples[k][i]);
errorsum+=P;
else
P=Math.Abs(m_YExamples[k][i]-Ooutput[k,i]);
P=errorsum/No;
voidbackward(intk)
betaO[k,i]=m_YExamples[k][i]-Ooutput[k,i];
betaH[k,i]=sum2(k,1,i);
deltaW2[i,j]=r*Ohidden[k,i]*Ooutput[k,j]*(1-Ooutput[k,j])*betaO[k,j];
deltathrO[i]=-r*Ooutput[k,i]*(1-Ooutput[k,i])*betaO[k,i];
deltaW1[i,j]=r*m_XExamples[k][i]*Ohidden[k,j]*(1-Ohidden[k,j])*betaH[k,j];
deltathrH[i]=-r*Ohidden[k,i]*(1-Ohidden[k,i])*betaH[k,i];
;
W2[i,j]+=deltaW2[i,j];
W1[i,j]+=deltaW1[i,j];
i++)thrO[i]+=deltathrO[i];
i++)thrH[i]+=deltathrH[i];
publicboolTrain()
do
jj++;
forward(i);
backward(i);
while(P>
eps&
&
jj<
time);
publicboolshuchu()
//********************************
//写文本
FileStreamfs=newFileStream("
最后输出节点的值.txt"
FileMode.Create);
StreamWritersw=newStreamWriter(fs);
j++)
sw.WriteLine("
{0,-20}{1,-20}{2,-20}"
i+1,j+1,Ooutput[i,j]);
sw.Close();
fs.Close();
FileStreamfss=newFileStream("
误差值.txt"
StreamWritersww=newStreamWriter(fss);
sww.WriteLine("
{0,-20}{1,-20}"
P,jj);
sww.Close();
fss.Close();
FileStreamfffs=newFileStream("
最终输入节点与隐层节点的权值.txt"
StreamWritersssw=newStreamWriter(fffs);
sssw.WriteLine("
i+1,j+1,W1[i,j]);
sssw.Close();
fffs.Close();
FileStreamffs=newFileStream("
最终隐层节点与输出节点的权值.txt"
StreamWriterssw=newStreamWriter(ffs);
ssw.WriteLine("
i+1,j+1,W2[i,j]);
ssw.Close();
ffs.Close();
FileStreamffss=newFileStream("
最终隐含层阈值.txt"
StreamWriterssww=newStreamWriter(ffss);
ssww.WriteLine("
{0,-20}"
thrH[i]);
ssww.Close();
ffss.Close();
FileStreamff=newFileStream("
最终输出层阈值.txt"
StreamWriterss=newStreamWriter(ff);
ss.WriteLine("
thrO[i]);
ss.Close();
ff.Close();
doublesum12(double[]ti,inth,inti)
t+=W1[j,i]*ti[j];
t+=W2[j,i]*Ohidden[0,j];
publicboolTest()
double[]t=newdouble[Ni];
for(intkk=0;
kk<
kk++)
//double[]O=newdouble[No];
t[0]=m_TXExamples[kk][0];
t[1]=m_TXExamples[kk][1];
t[2]=m_TXExamples[kk][2];
t[3]=m_TXExamples[kk][3];
Ohidden[0,i]=sigmoid(sum12(t,1,i));
Ooutput[0,i]=sigmoid(sum12(t,2,i));
m_TYExamples[kk][i]=Ooutput[0,i];
//O[i]=Ooutput[0,i];
TEST_0ut.txt"
m_TYExamples[j][i]);
}
classProgram
staticvoidMain(string[]args)
{
NNnet=newNN();
net.XY();
intkk=100,Tk=30,aa=5,In=4;
StreamReaderT_file=newStreamReader("
test.txt"
);
//读取训练文件的名字
for(inti=1;
=kk;
stringinSample=T_file.ReadLine();
if(inSample!
=null)
string[]str=System.Text.RegularExpressions.Regex.Split(inSample,@"
['
'
]+"
for(intj=1;
=aa;
doubletemp=double.Parse(str[j-1]);
if(j<
=In)
net.Set_XExamValue(i,j,temp);
net.Set_YExamValue(i,j-In,temp);
net.TXY();
StreamReaderTT_file=newStreamReader("
ce.txt"
//读取测试文件的名字
=
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C# BP程序 BP 程序