人工神经网络入门(4) —— AForge.Net简介

rel="File-List" href="file:///C:%5CUsers%5CAaron.Guo%5CAppData%5CLocal%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_filelist.xml" /> rel="Edit-Time-Data" href="file:///C:%5CUsers%5CAaron.Guo%5CAppData%5CLocal%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_editdata.mso" /> rel="themeData" href="file:///C:%5CUsers%5CAaron.Guo%5CAppData%5CLocal%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_themedata.thmx" /> rel="colorSchemeMapping" href="file:///C:%5CUsers%5CAaron.Guo%5CAppData%5CLocal%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_colorschememapping.xml" />

范例程序下载:http://files.cnblogs.com/gpcuster/ANN3.rar
如果您有疑问,可以先参考 FAQ
如果您未找到满意的答案,可以在下面留言:)

0 目录
人工神经网络入门(1 —— 单层人工神经网络应用示
人工神经网络入门(2 —— 人工神经基本概念介绍
人工神经网络入门(3 —— 多层人工神经网络应用示例
人工神经网络入门(4 —— AForge.Net简介

1 介绍
这篇文章中,我们将介绍一个用C#实现的框架AForge,利用这个框架,您可以方便地操作人工网络,计算机视觉,机器学习,图像处理,遗传算法等

2
 神经网络设计部分框架介绍
在这里我要强调:这段代码写的非常漂亮,一种代码如诗的美感,让我神往。

这段代码位于AForge.Neuro名字空间中。

这个库文件由6个主要部分组成:

  • Neuron - 所有神经元(neurons)的抽象基类, 它封装了所有neuron所共有的一些基本元素:权值, 输出值和输入值. 其他的neuron都是在该基础之上派生出来的.
  • Layer - 代表neurons的集合. 这个抽象基类封装了层(Layer的共性.
  • Network - 代表一个神经网络, neuron's layers的集合. 这个抽象基类提供了Network的共性.其他的Network都是在该基础之上派生出来的.
  • IActivationFunction - 激活函数(activation function)的接口. 所有的激活函数都派生于该接口
  • IUnsupervisedLearning - 无导师学习(unsupervised learning)算法的接口 - 这种类型的学习体系在学习的过程中只提供输入,不提供针对该输入的期望输出. 该体系的目标是不断找出更优的解.
  • ISupervisedLearning - 有导师学习(supervised learning)算法的接口  - 这种类型的学习体系在学习的过程中提供输入和针对该输入的期望输出. 该体系的目标就是通过实际的输出和期望的输出来不断修正网络.

这些类的关系可以用下图来表示:


这个文件包含下面2中神经网络体系:

  • Activation Network
  • Distance Network

同时提供以下5种学习算法用于解决不同的问题:

  • Perceptron Learning 
  • Delta Rule Learning
  • Back Propagation Learning 
  • SOM Learning
  • Elastic Network Learning 

3 代码示例
范例程序下载:http://files.cnblogs.com/gpcuster/ANN3.rar

该程序的使用说明和人工神经网络入门(1 —— 单层人工神经网络应用示例类似,可以参考http://www.cnblogs.com/gpcuster/archive/2008/05/22/1204456.html但是是使用的AForge.Net中的框架实现。

拿求AND运算的例子来说,代码如下:

ActivationNetwork network  =   new  ActivationNetwork( new  ThresholdFunction(),  2 1 );
PerceptronLearning teacher 
=   new  PerceptronLearning(network);

            
double [][] input  =   new   double [ 4 ][];
            
double [][] output  =   new   double [ 4 ][];

            input[
0 =   new   double []  00 } ;
            output[
0 =   new   double []  0 } ;
            input[
1 =   new   double []  01 } ;
            output[
1 =   new   double []  0 } ;
            input[
2 =   new   double []  10 } ;
            output[
2 =   new   double []  0 } ;
            input[
3 =   new   double []  11 } ;
            output[
3 =   new   double []  1 } ;

            
double  error  =   1.0 ;

            
while  (error  >   0.001 )
            
{
                error 
= teacher.RunEpoch(input, output);
            }

4 进一步学习

您可以查看类库的源代码,同时参考这篇文章《Neural Network On C#

5 预告
我们将利用本章介绍的框架解决一个实际的问题:)

6 总结

在这一章中,我们介绍了一个ANN库,通过它,你可以非常方便地建立你自己的神经网络,但是前提你得了解解决问题该需要使用哪种类型的网络,同时配合使用什么样的学习算法。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值