范例程序下载: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. Jury Compromise POJ - 1015 dp (标答有误)背包思想

    题意:从 n个人里面找到m个人  每个人有两个值  d   p     满足在abs(sum(d)-sum(p)) 最小的前提下sum(d)+sum(p)最大 思路:dp[i][j]  i个人中  和 ...

  2. 【XSY2701】异或图 线性基 容斥原理

    题目描述 定义两个图\(G_1\)与\(G_2\)的异或图为一个图\(G\),其中图\(G\)的每条边在\(G_1\)与\(G_2\)中出现次数和为\(1\). 给你\(m\)个图,问你这\(m\)个 ...

  3. crontab 任务带日期输出

    date命令用法#带格式输出$ date +"%Y-%m-%d"#输出1天后的日期$ date -d "1 day" +"%Y-%m-%d" ...

  4. 【CF618F】Double Knapsack(构造)

    [CF618F]Double Knapsack(构造) 题面 洛谷 Codeforces 题解 很妙的一道题. 发现找两个数集很不爽,我们强制加强限制,我们来找两个区间,使得他们的区间和相等. 把区间 ...

  5. js排序算法总结

    快速排序 大致分三步: 1.找基准(一般是以中间项为基准) 2.遍历数组,小于基准的放在left,大于基准的放在right 3.递归 快速排序的平均时间复杂度是O(nlogn),最差情况是O(n²). ...

  6. python查找字符串所有子串

    https://blog.csdn.net/jiangjiang_jian/article/details/79453856 [s[i:i + x + 1] for x in range(len(s) ...

  7. 【转】idea设置JVM运行参数

    对JVM运行参数进行修改是JVM性能调优的重要手段,下面介绍在应用程序开发过程中JVM参数设置的几种方式. 方式一 java程序运行时指定 -Dproperty=value 该参数通常用于设置系统级全 ...

  8. uvaLive6837 ThereIsNoAlternative (kruskal)

    题意:给一个联通图,求出不可替代的边,即存在于所有最小生成树中的边,的数量和它们边权之和 首先kruskal跑出一个最小生成树,枚举其中所有的边,若把这条边去掉以后再跑kruskal答案不是最小,则这 ...

  9. Cookie知识点总结

    Cookie机制是采用客户端保持Http状态信息的方案. Cookie是在浏览器访问web服务器的某个资源的时候,由web服务器在http响应消息头中附带给浏览器的一个小文本文件. 一旦web服务器保 ...

  10. log4j2 自定义配置文件,java载入

    http://logging.apache.org/log4j/2.x/faq.html#separate_log_files How do I reconfigure log4j2 in code ...