星辰.Net技术社区论坛

首页 » .NET » 算法/数据结构 » C#实现单层人工神经网络
admin - 2008-6-23 13:30:00
本程序示例2个简单的运算:íS ¾ £Hª;www.netcsharp.cnÅÑà’­×AŰi
1 AND运算: 就是咱们常用的求和运算,如:1 AND 0 = 1 íS ¾ £Hª;www.netcsharp.cnÅÑà’­×AŰi
2 OR运算: 就是咱们常用的求并运算,如:1 OR 0 = 1 íS ¾ £Hª;www.netcsharp.cnÅÑà’­×AŰi
íS ¾ £Hª;www.netcsharp.cnÅÑà’­×AŰi
启动程序后,你将会看到如下的界面:íS ¾ £Hª;www.netcsharp.cnÅÑà’­×AŰi
íS ¾ £Hª;www.netcsharp.cnÅÑà’­×AŰi
点击“开始训练AND”按钮后,程序就开始训练 AND 运算,并在训练结束后提示咱们。íS ¾ £Hª;www.netcsharp.cnÅÑà’­×AŰi
同时界面变成如下:íS ¾ £Hª;www.netcsharp.cnÅÑà’­×AŰi
íS ¾ £Hª;www.netcsharp.cnÅÑà’­×AŰi
你只需要点击“0 0”按钮,就会在“计算结果”下面显示经过训练以后的ANN计算出来的结果。íS ¾ £Hª;www.netcsharp.cnÅÑà’­×AŰi
如下所示:íS ¾ £Hª;www.netcsharp.cnÅÑà’­×AŰi
“计算结果”显示为“1.74E-10”,说明 0 AND 0 = 0.íS ¾ £Hª;www.netcsharp.cnÅÑà’­×AŰi
这个结果就是我们想要的。训练成功íS ¾ £Hª;www.netcsharp.cnÅÑà’­×AŰi
íS ¾ £Hª;www.netcsharp.cnÅÑà’­×AŰi
其他的按钮使用方法类似:)íS ¾ £Hª;www.netcsharp.cnÅÑà’­×AŰi
íS ¾ £Hª;www.netcsharp.cnÅÑà’­×AŰi
3 计算过程íS ¾ £Hª;www.netcsharp.cnÅÑà’­×AŰi
咱们可以参考一下AND计算的总体运行过程:íS ¾ £Hª;www.netcsharp.cnÅÑà’­×AŰi
íS ¾ £Hª;www.netcsharp.cnÅÑà’­×AŰi
//初始化训练集合íS ¾ £Hª;www.netcsharp.cnÅÑà’­×AŰi
            TrainSet[] sets = new TrainSet[] {new TrainSet(0, 0, 0), new TrainSet(0, 1, 0), íS ¾ £Hª;www.netcsharp.cnÅÑà’­×AŰi
                                                               
new TrainSet(1, 0, 0), new TrainSet(1, 1, 1)};íS ¾ £Hª;www.netcsharp.cnÅÑà’­×AŰi
íS ¾ £Hª;www.netcsharp.cnÅÑà’­×AŰi
           
//构造单层神经网络 2 个输入节点 1个输出节点íS ¾ £Hª;www.netcsharp.cnÅÑà’­×AŰi
            NeuralNetwork nn = new NeuralNetwork(2, 1);íS ¾ £Hª;www.netcsharp.cnÅÑà’­×AŰi
            slnn
= new SingleLayerNeuralNetworks(nn, sets);íS ¾ £Hª;www.netcsharp.cnÅÑà’­×AŰi
íS ¾ £Hª;www.netcsharp.cnÅÑà’­×AŰi
           
//训练íS ¾ £Hª;www.netcsharp.cnÅÑà’­×AŰi
            slnn.Train();íS ¾ £Hª;www.netcsharp.cnÅÑà’­×AŰi
íS ¾ £Hª;www.netcsharp.cnÅÑà’­×AŰi
            MessageBox.Show(
"AND运算训练结束");íS ¾ £Hª;www.netcsharp.cnÅÑà’­×AŰi
           
this.button2.Enabled = true;íS ¾ £Hª;www.netcsharp.cnÅÑà’­×AŰi
           
this.button3.Enabled = true;íS ¾ £Hª;www.netcsharp.cnÅÑà’­×AŰi
           
this.button4.Enabled = true;íS ¾ £Hª;www.netcsharp.cnÅÑà’­×AŰi
           
this.button1.Enabled = true;íS ¾ £Hª;www.netcsharp.cnÅÑà’­×AŰi
           
this.Text = "AND运算";
íS ¾ £Hª;www.netcsharp.cnÅÑà’­×AŰi
íS ¾ £Hª;www.netcsharp.cnÅÑà’­×AŰi
OK,通过上面的代码可以看出,咱们的神经网络有2个输入节点,用于输入AND运算的2个参数。1个输出节点,用于输出AND运算的1个结果。íS ¾ £Hª;www.netcsharp.cnÅÑà’­×AŰi
接下来,咱们的单层神经网络通过一个训练集(有一组输入和相应的希望输出数据)开始训练。训练结束后,咱们就可以用相应的数据对训练结果进行测试了(通过“0 0 ”等按钮)。íS ¾ £Hª;www.netcsharp.cnÅÑà’­×AŰi
4 预告íS ¾ £Hª;www.netcsharp.cnÅÑà’­×AŰi
在下一篇文章中,我将进行ANN基本概率的介绍和本示例实现的原理:)íS ¾ £Hª;www.netcsharp.cnÅÑà’­×AŰi
5 总结íS ¾ £Hª;www.netcsharp.cnÅÑà’­×AŰi
在本文中,咱们介绍了1个基于单层神经网络的简单易懂的程序示例,可以让大家先有一个感性的认识。
íS ¾ £Hª;www.netcsharp.cnÅÑà’­×AŰi

附件: ann1.rar
1
查看完整版本: C#实现单层人工神经网络