ImageVerifierCode 换一换
格式:DOCX , 页数:17 ,大小:16.61KB ,
资源ID:11568683      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/11568683.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(C# BP程序.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

C# BP程序.docx

1、C# BP程序using System;using System.Collections.Generic;using System.Linq;using System.IO;using System.Text;using System.Data;namespace NN_HYL class NN int k = 100,Tk=30,jj=0; int Ni = 4, No = 1,time=10000,Nh; double, W1, W2, deltaW1, deltaW2, betaO, betaH, Ohidden, Ooutput; double thrH, thrO, deltathr

2、H, deltathrO; / p; double r, eps, a, P; public NN() Nh = 3; r = 2.5; eps = 0.01; a = 1; W1 = new doubleNi, Nh; W2 = new doubleNh, No; deltaW1 = new doubleNi, Nh; deltaW2 = new doubleNh, No; betaO = new doublek, No; betaH = new doublek, Nh; Ohidden = new doublek, Nh; Ooutput = new doublek, No; thrH =

3、 new doubleNh; thrO = new doubleNo; deltathrH = new doubleNh; deltathrO = new doubleNo; /p = new doublek; protected ListList m_XExamples; /输入训练样本 protected ListList m_YExamples; /输出训练样本 public bool XY() /初始化样本,输入初始化为1,输出初始化为0 m_XExamples = new ListList(); m_YExamples = new ListList(); for (int i = 0

4、; i k; i+) List row = new List(); for (int j = 0; j Ni; j+) row.Add(1.0); m_XExamples.Add(row); List row1 = new List(); for (int j = 0; j No; j+) row1.Add(0.0); m_YExamples.Add(row1); return true; public bool Get_XExamValue(int examIndex, int index, ref double a) if (examIndex k) return false; if (i

5、ndex Ni) return false; a = m_XExamplesexamIndex - 1index - 1; return true; /设置输入样本值 public bool Set_XExamValue(int examIndex, int index, double examValue) if (examIndex k) return false; if (index Ni) return false; m_XExamplesexamIndex - 1index - 1 = examValue; return true; /获得输出样本 public bool Get_YE

6、xamValue(int examIndex, int index, ref double a) if (examIndex k) return false; if (index No) return false; a = m_YExamplesexamIndex - 1index - 1; return true; /设置输出样本值 public bool Set_YExamValue(int examIndex, int index, double examValue) if (examIndex k) return false; if (index No) return false; m

7、_YExamplesexamIndex - 1index - 1 = examValue; return true; protected ListList m_TXExamples; /输入测试样本 protected ListList m_TYExamples; /输出测试样本 public bool TXY() /初始化样本,输入初始化为1,输出初始化为0 m_TXExamples = new ListList(); m_TYExamples = new ListList(); for (int i = 0; i Tk; i+) List row = new List(); for (in

8、t j = 0; j Ni; j+) row.Add(1.0); m_TXExamples.Add(row); List row1 = new List(); for (int j = 0; j No; j+) row1.Add(0.0); m_TYExamples.Add(row1); return true; public bool Get_TXExamValue(int examIndex, int index, ref double a) if (examIndex Tk) return false; if (index Ni) return false; a = m_TXExampl

9、esexamIndex - 1index - 1; return true; /设置输入样本值 public bool Set_TXExamValue(int examIndex, int index, double examValue) if (examIndex k) return false; if (index Ni) return false; m_TXExamplesexamIndex - 1index - 1 = examValue; return true; public bool Init() int i, j; Random rd = new Random(); for (

10、i = 0; i Ni; i+) for (j = 0; j Nh; j+) W1i, j = rd.NextDouble()-0.5;/% 12 / 10.0 - 1.2; for (i = 0; i Nh; i+) for (j = 0; j No; j+) W2i, j = rd.NextDouble()-0.5;/ % 12 / 10.0 - 1.2; for (i = 0; i Nh; i+) thrHi = rd.NextDouble()-0.5;/ % 12 / 10.0 - 1.2; for (i = 0; i No; i+) thrOi = rd.NextDouble()-0

11、.5;/ % 12 / 10.0 - 1.2; return true; double sigmoid(double x) return 1.0 / (1.0 + Math.Exp(-a * x); double sum1(int k, int h, int i) double t = 0; int j; switch (h) case 1: for (j = 0; j Ni; j+) t += W1j, i * m_XExampleskj; t -= thrHi; break; case 2: for (j = 0; j Nh; j+) t += W2j, i * Ohiddenk, j;

12、t -= thrOi; break; default: break; return t; double sum2(int k, int h, int i) double t = 0; for (int j = 0; j No; j+) t += W2i, j * Ooutputk, j * (1.0 - Ooutputk, j) * betaOk, j; return t; void forward(int k) double errorsum = 0; for (int i = 0; i Nh; i+) Ohiddenk, i = sigmoid(sum1(k, 1, i); for (in

13、t i = 0; i No; i+) Ooutputk, i = sigmoid(sum1(k, 2, i); if (m_YExampleski != 0) P = Math.Abs(m_YExampleski - Ooutputk, i) / m_YExampleski); errorsum += P; else P = Math.Abs(m_YExampleski - Ooutputk, i); errorsum += P; P = errorsum/No; void backward(int k) int i, j; for (i = 0; i No; i+) betaOk, i =

14、m_YExampleski - Ooutputk, i; for (i = 0; i Nh; i+) betaHk, i = sum2(k, 1, i); for (i = 0; i Nh; i+) for (j = 0; j No; j+) deltaW2i, j = r * Ohiddenk, i * Ooutputk, j * (1 - Ooutputk, j) * betaOk, j; for (i = 0; i No; i+) deltathrOi = -r * Ooutputk, i * (1 - Ooutputk, i) * betaOk, i; for (i = 0; i Ni

15、; i+) for (j = 0; j Nh; j+) deltaW1i, j = r * m_XExampleski * Ohiddenk, j * (1 - Ohiddenk, j) * betaHk, j; for (i = 0; i Nh; i+) deltathrHi = -r * Ohiddenk, i * (1 - Ohiddenk, i) * betaHk, i; ; for (i = 0; i Nh; i+) for (j = 0; j No; j+) W2i, j += deltaW2i, j; for (i = 0; i Ni; i+) for (j = 0; j Nh;

16、 j+) W1i, j += deltaW1i, j; for (i = 0; i No; i+) thrOi += deltathrOi; for (i = 0; i Nh; i+) thrHi += deltathrHi; public bool Train() do jj+; for (int i = 0; i eps & jj time); return true; public bool shuchu() /* /写文本 FileStream fs = new FileStream(最后输出节点的值.txt, FileMode.Create); StreamWriter sw = n

17、ew StreamWriter(fs); for (int i = 0; i k; i+) for (int j = 0; j No;j+ ) sw.WriteLine(0,-201,-202,-20, i+1,j + 1, Ooutputi, j); sw.Close(); fs.Close(); /* /写文本 FileStream fss = new FileStream(误差值.txt, FileMode.Create); StreamWriter sww = new StreamWriter(fss); sww.WriteLine(0,-20 1,-20, P, jj); sww.C

18、lose(); fss.Close(); /* /写文本 FileStream fffs = new FileStream(最终输入节点与隐层节点的权值.txt, FileMode.Create); StreamWriter sssw = new StreamWriter(fffs); for (int i = 0; i Ni; i+) for (int j = 0; j Nh; j+) sssw.WriteLine(0,-201,-202,-20, i + 1, j + 1, W1i, j); sssw.Close(); fffs.Close(); /* /写文本 FileStream ff

19、s = new FileStream(最终隐层节点与输出节点的权值.txt, FileMode.Create); StreamWriter ssw = new StreamWriter(ffs); for (int i = 0; i Nh; i+) for (int j = 0; j No; j+) ssw.WriteLine(0,-201,-202,-20, i + 1, j + 1, W2i, j); ssw.Close(); ffs.Close(); /* /写文本 FileStream ffss = new FileStream(最终隐含层阈值.txt, FileMode.Create

20、); StreamWriter ssww = new StreamWriter(ffss); for (int i = 0; i Nh; i+) ssww.WriteLine(0,-20, thrHi); ssww.Close(); ffss.Close(); ssw.Close(); ffs.Close(); /* /写文本 FileStream ff = new FileStream(最终输出层阈值.txt, FileMode.Create); StreamWriter ss = new StreamWriter(ff); for (int i = 0; i No; i+) ss.Writ

21、eLine(0,-20, thrOi); ss.Close(); ff.Close(); return true; double sum12(double ti, int h, int i) double t = 0; int j; switch (h) case 1: for (j = 0; j Ni; j+) t += W1j, i * tij; t -= thrHi; break; case 2: for (j = 0; j Nh; j+) t += W2j, i * Ohidden0, j; t -= thrOi; break; default: break; return t; pu

22、blic bool Test() double t = new doubleNi; for (int kk = 0; kk Tk; kk+) /double O = new doubleNo; t0 = m_TXExampleskk0; t1 = m_TXExampleskk1; t2 = m_TXExampleskk2; t3 = m_TXExampleskk3; for (int i = 0; i Nh; i+) Ohidden0, i = sigmoid(sum12(t, 1, i); for (int i = 0; i No; i+) Ooutput0, i = sigmoid(sum

23、12(t, 2, i); m_TYExampleskki = Ooutput0, i; / Oi = Ooutput0, i; /* /写文本 FileStream ff = new FileStream(TEST_0ut.txt, FileMode.Create); StreamWriter ss = new StreamWriter(ff); for (int j = 0; j Tk;j+ ) for (int i = 0; i No; i+) ss.WriteLine(0,-20, m_TYExamplesji); ss.Close(); ff.Close(); return true;

24、 using System;using System.Collections.Generic;using System.Linq;using System.IO;using System.Text;using System.Data;namespace NN_HYL class Program static void Main(string args) NN net = new NN(); net.XY(); int kk = 100, Tk=30,aa = 5, In = 4; StreamReader T_file = new StreamReader(test.txt);/读取训练文件的

25、名字 for (int i = 1; i = kk; i+) string inSample = T_file.ReadLine(); if (inSample != null) string str = System.Text.RegularExpressions.Regex.Split(inSample, +); for (int j = 1; j = aa; j+) double temp = double.Parse(strj - 1); if (j = In) net.Set_XExamValue(i, j, temp); else net.Set_YExamValue(i, j - In, temp); net.TXY(); StreamReader TT_file = new StreamReader(ce.txt);/读取测试文件的名字 for (int i = 1; i =

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1