人工神经网络入门(1) —— 单层人工神经网络应用示例
2015-12-31 21:03
567 查看
范例程序下载:http://files.cnblogs.com/gpcuster/ANN1.rar
如果您有疑问,可以先参考 FAQ
如果您未找到满意的答案,可以在下面留言:)
1 介绍
还记得在2年前刚刚接触RoboCup的时候,从学长口中听说了ANN(人工神经网络),这个东西可神奇了,他能通过学会从而对一些问题进行足够好处理。就像咱们人一样,可以通过学习,了解新的知识。
但是2年了,一直想学习ANN,但是一直没有成功。原因很多,其中主要的原因是咱们国内的教程中关于这个技术的介绍过于理论化,以至于我们基础差和自学者望而却步。
现在,我希望通过一个简单的示例,让大家先有一个感性的认识,然后再了解一些相应的理论,从而达到更好的学习效果。
2 范例程序的使用和说明
本程序示例2个简单的运算:
1 AND运算: 就是咱们常用的求和运算,如:1 AND 0 = 1
2 OR运算: 就是咱们常用的求并运算,如:1 OR 0 = 1
启动程序后,你将会看到如下的界面:
点击“开始训练AND”按钮后,程序就开始训练 AND 运算,并在训练结束后提示咱们。
同时界面变成如下:
你只需要点击“0 0”按钮,就会在“计算结果”下面显示经过训练以后的ANN计算出来的结果。
如下所示:
“计算结果”显示为“1.74E-10”,说明 0 AND 0 = 0.
这个结果就是我们想要的。训练成功
其他的按钮使用方法类似:)
3 计算过程
咱们可以参考一下AND计算的总体运行过程:
//初始化训练集合
TrainSet[] sets = new TrainSet[]{new TrainSet(0, 0, 0), new TrainSet(0, 1, 0),
new TrainSet(1, 0, 0), new TrainSet(1, 1, 1)};
//构造单层神经网络 2 个输入节点 1个输出节点
NeuralNetwork nn = new NeuralNetwork(2, 1);
slnn = new SingleLayerNeuralNetworks(nn, sets);
//训练
slnn.Train();
MessageBox.Show("AND运算训练结束");
this.button2.Enabled = true;
this.button3.Enabled = true;
this.button4.Enabled = true;
this.button1.Enabled = true;
this.Text = "AND运算";
OK,通过上面的代码可以看出,咱们的神经网络有2个输入节点,用于输入AND运算的2个参数。1个输出节点,用于输出AND运算的1个结果。
接下来,咱们的单层神经网络通过一个训练集(有一组输入和相应的希望输出数据)开始训练。训练结束后,咱们就可以用相应的数据对训练结果进行测试了(通过“0 0 ”等按钮)。
4 预告
在下一篇文章中,我将进行ANN基本概率的介绍和本示例实现的原理:)
5 总结
在本文中,咱们介绍了1个基于单层神经网络的简单易懂的程序示例,可以让大家先有一个感性的认识。
如果您有疑问,可以先参考 FAQ
如果您未找到满意的答案,可以在下面留言:)
1 介绍
还记得在2年前刚刚接触RoboCup的时候,从学长口中听说了ANN(人工神经网络),这个东西可神奇了,他能通过学会从而对一些问题进行足够好处理。就像咱们人一样,可以通过学习,了解新的知识。
但是2年了,一直想学习ANN,但是一直没有成功。原因很多,其中主要的原因是咱们国内的教程中关于这个技术的介绍过于理论化,以至于我们基础差和自学者望而却步。
现在,我希望通过一个简单的示例,让大家先有一个感性的认识,然后再了解一些相应的理论,从而达到更好的学习效果。
2 范例程序的使用和说明
本程序示例2个简单的运算:
1 AND运算: 就是咱们常用的求和运算,如:1 AND 0 = 1
2 OR运算: 就是咱们常用的求并运算,如:1 OR 0 = 1
启动程序后,你将会看到如下的界面:
点击“开始训练AND”按钮后,程序就开始训练 AND 运算,并在训练结束后提示咱们。
同时界面变成如下:
你只需要点击“0 0”按钮,就会在“计算结果”下面显示经过训练以后的ANN计算出来的结果。
如下所示:
“计算结果”显示为“1.74E-10”,说明 0 AND 0 = 0.
这个结果就是我们想要的。训练成功
其他的按钮使用方法类似:)
3 计算过程
咱们可以参考一下AND计算的总体运行过程:
//初始化训练集合
TrainSet[] sets = new TrainSet[]{new TrainSet(0, 0, 0), new TrainSet(0, 1, 0),
new TrainSet(1, 0, 0), new TrainSet(1, 1, 1)};
//构造单层神经网络 2 个输入节点 1个输出节点
NeuralNetwork nn = new NeuralNetwork(2, 1);
slnn = new SingleLayerNeuralNetworks(nn, sets);
//训练
slnn.Train();
MessageBox.Show("AND运算训练结束");
this.button2.Enabled = true;
this.button3.Enabled = true;
this.button4.Enabled = true;
this.button1.Enabled = true;
this.Text = "AND运算";
OK,通过上面的代码可以看出,咱们的神经网络有2个输入节点,用于输入AND运算的2个参数。1个输出节点,用于输出AND运算的1个结果。
接下来,咱们的单层神经网络通过一个训练集(有一组输入和相应的希望输出数据)开始训练。训练结束后,咱们就可以用相应的数据对训练结果进行测试了(通过“0 0 ”等按钮)。
4 预告
在下一篇文章中,我将进行ANN基本概率的介绍和本示例实现的原理:)
5 总结
在本文中,咱们介绍了1个基于单层神经网络的简单易懂的程序示例,可以让大家先有一个感性的认识。
相关文章推荐
- 人工神经网络入门(0) —— 关于人工神经网络的FAQ
- HttpServlet详解
- 用NSURLSession从网络获取图片
- 通过HttpURLConnection获取网页图片 并保存至内存卡的例子
- Glassfish4.1和Tomcat配置Https访问
- Codevs_P1227 方格取数2(拆点网络流+最小费用流)
- 运输层—TCP的连接管理
- 深入解析开源项目之Volley框架
- https证书申请
- java 下载本地文件 下载网络文件
- 深信度网络
- HttpClient4.4.1模拟登录知乎
- TCP连接检测机制
- MATLAB复杂网络工具箱——matgraph基本操作总结
- burp suite 抓 https
- LINUX-网络-ifconfig
- 从朴素贝叶斯分类器到贝叶斯网络(上)
- lighttpd 配置
- 手机网络
- getResponseCode获取URL响应状态码 HTTP状态返回码