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

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

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

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

这段代码位于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[] { 0, 0 };
            output[0] = new double[] { 0 };
            input[1] = new double[] { 0, 1 };
            output[1] = new double[] { 0 };
            input[2] = new double[] { 1, 0 };
            output[2] = new double[] { 0 };
            input[3] = new double[] { 1, 1 };
            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库,通过它,你可以非常方便地建立你自己的神经网络,但是前提你得了解解决问题该需要使用哪种类型的网络,同时配合使用什么样的学习算法。

人工神经网络入门(4) —— AFORGE.NET简介的更多相关文章

  1. 人工神经网络简介和单层网络实现AND运算--AForge.NET框架的使用(五)

    原文:人工神经网络简介和单层网络实现AND运算--AForge.NET框架的使用(五) 前面4篇文章说的是模糊系统,它不同于传统的值逻辑,理论基础是模糊数学,所以有些朋友看着有点迷糊,如果有兴趣建议参 ...

  2. keras人工神经网络构建入门

    //2019.07.29-301.Keras 是提供一些高度可用神经网络框架的 Python API ,能帮助你快速的构建和训练自己的深度学习模型,它的后端是 TensorFlow 或者 Theano ...

  3. AI入门:人工神经网络理解及BP神经网络

    本人是个菜鸟,对于机器学习还没入门,但是我去看到了一个作者写的文章,个人感觉是神经网络入门的好帮手,在此推荐给大家,支持原著! https://baijiahao.baidu.com/s?id=160 ...

  4. C#中调用Matlab人工神经网络算法实现手写数字识别

    手写数字识别实现 设计技术参数:通过由数字构成的图像,自动实现几个不同数字的识别,设计识别方法,有较高的识别率 关键字:二值化  投影  矩阵  目标定位  Matlab 手写数字图像识别简介: 手写 ...

  5. 开源的c语言人工神经网络计算库 FANN

    这年头机器学习非常的火,神经网络算是机器学习算法中的比较重要的一种.这段时间我也花了些功夫,学了点皮毛,顺便做点学习笔记. 介绍人工神经网络的基本理论的教科书很多.我正在看的是蒋宗礼教授写的<人 ...

  6. 用BP人工神经网络识别手写数字

    http://wenku.baidu.com/link?url=HQ-5tZCXBQ3uwPZQECHkMCtursKIpglboBHq416N-q2WZupkNNH3Gv4vtEHyPULezDb5 ...

  7. neurosolutions 人工神经网络集成开发环境 keras

    人工神经网络集成开发环境 :  http://www.neurosolutions.com/ keras:   https://github.com/fchollet/keras 文档    http ...

  8. [DL学习笔记]从人工神经网络到卷积神经网络_2_卷积神经网络

    先一层一层的说卷积神经网络是啥: 1:卷积层,特征提取 我们输入这样一幅图片(28*28): 如果用传统神经网络,下一层的每个神经元将连接到输入图片的每一个像素上去,但是在卷积神经网络中,我们只把输入 ...

  9. [DL学习笔记]从人工神经网络到卷积神经网络_1_神经网络和BP算法

    前言:这只是我的一个学习笔记,里边肯定有不少错误,还希望有大神能帮帮找找,由于是从小白的视角来看问题的,所以对于初学者或多或少会有点帮助吧. 1:人工全连接神经网络和BP算法 <1>:人工 ...

随机推荐

  1. POJ 2449 Remmarguts' Date (算竞进阶习题)

    A* + dijkstra/spfa 第K短路的模板题,就是直接把最短路当成估价函数,保证估价函数的性质(从当前状态转移的估计值一定不大于实际值) 我们建反图从终点跑最短路,就能求出从各个点到终点的最 ...

  2. ZOJ 3846 GCD Reduce//水啊水啊水啊水

    GCD Reduce Time Limit: 2 Seconds      Memory Limit: 65536 KB      Special Judge You are given a sequ ...

  3. 【arc073e】Ball Coloring(线段树,贪心)

    [arc073e]Ball Coloring(线段树,贪心) 题面 AtCoder 洛谷 题解 大型翻车现场,菊队完美压中男神的模拟题 首先钦定全局最小值为红色,剩下的袋子按照其中较大值排序. 枚举前 ...

  4. 自写juqery插件实现左右循环滚动效果图

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xht ...

  5. Picture POJ - 1177 (扫描线)

    扫描线求周长,可以看成两条线,一条扫x轴,一条扫y轴,然后这两天线扫过去的 周长加起来,就是周长了 #include<map> #include<set> #include&l ...

  6. [JSOI2008]Blue Mary的职员分配

    由于Blue Mary呕心沥血的管理,Blue Mary的网络公司蒸蒸日上.现在一共拥有了n名职员,可惜没有任何的金钱和声誉.平均每名每天职员都可以给公司带来x单位金钱或者y单位声誉(名利不能双全). ...

  7. kafka命令行脚本使用

    zookeeper集群部署:http://www.cnblogs.com/ding2016/p/8280696.html kafka集群部署:http://www.cnblogs.com/ding20 ...

  8. axios请求、返回拦截器

    1.http 请求拦截器 axios.interceptors.request.use(function(config){ //在发送请求之前做些什么 return config }), functi ...

  9. 【codevs4927】线段树练习

    题目大意:维护一个序列,支持区间加.区间染色.区间最值查询.区间和查询. 题解:对于区间赋值操作来说,维护一个赋值标记,注意,这里不能直接用赋值的值直接维护,因为不像加法标记,0 表示不用处理,这里 ...

  10. Java Scanner篇

    Scanner 翻译解释为扫描器 Java中用于控制台的的数据输入 包:import java.util.Scanner 使用方法:Scanner reader=new Scanner(System. ...