文档详情

实验四 BP神经网络模拟sin函数.doc

发布:2017-11-15约1.08万字共10页下载文档
文本预览下载声明
实验四 BP神经网络模拟sin函数 问题描述 BP神经网络模拟sin函数 根据人工神经网络学习算法,实现正弦曲线的拟合。要求能随机自动生成数量为n的正弦值作为训练集,并根据训练集拟合曲线,最后能通过输入x值测试理论与拟合sinx的拟合度。 设计思想 思维学普遍认为,人类大脑的思维分为抽象(逻辑)思维、形象(直观)思维和灵感(顿悟)思维三种基本方式。 逻辑性的思维是指根据逻辑规则进行推理的过程;它先将信息化成概念,并用符号表示,然后,根据符号运算按串行模式进行逻辑推理;这一过程可以写成串行的指令,让计算机执行。然而,直观性的思维是将分布式存储的信息综合起来,结果是忽然间产生想法或解决问题的办法。这种思维方式的根本之点在于以下两点:1.信息是通过神经元上的兴奋模式分布储在网络上;2.信息处理是通过神经元之间同时相互作用的动态过程来完成的。 人工神经网络就是模拟人思维的第二种方式。这是一个非线性动力学系统,其特色在于信息的分布式存储和并行协同处理。虽然单个神经元的结构极其简单,功能有限,但大量神经元构成的网络系统所能实现的行为却是极其丰富多彩的。 这些神经元一般分为三种:输入层神经元,隐层神经元和输出层神经元。 输入层:单元i的输入: 单元数量:d 单元i 单元i 隐 层:单元j的输入: 单元数量: 单元j 单元j 输出层:单元k的输入: 单元数量:c 单元k的输出: 单元k 程序设计 编译环境 使用C#语言编写,编译器为VS2008,运行环境为Windows+.NetFramework3.5 程序运行流程 运行程序后,单击“训练”按钮,开始训练,训练完成后可以看到函数图像与各权值,输入x的值可以查看预测值与准确值。 类设计 神经网络类的定义: class NeuralNetwork { #region Instance Fields //private fields private int num_in; private int num_hid; private int num_out; private double[,] i_to_h_wts; private double[,] h_to_o_wts; private double[] inputs; private double[] hidden; private double[] outputs; private double learningRate = 0.3; private Random gen = new Random(); #endregion #region Constructor /// summary /// Creates a new NeuralNetwork, using the parameters /// provided /// /summary /// param name=num_inNumber of inputs nodes/param /// param name=num_hidNumber of hidden nodes/param /// param name=num_outNumber of output nodes/param public NeuralNetwork(int num_in, int num_hid, int num_out) { this.num_in = num_in; this.num_hid = num_hid; this.num_out = num_out; i_to_h_wts = new double[num_in + 1, num_hid]; h_to_o_wts = new double[num_hid + 1, num_out]; inputs = new double[num_in + 1]; hidden = new double[num_hid + 1]; outputs = new double[num_out]; } #endr
显示全部
相似文档