极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 4083|回复: 0

processing神经网路(2)

[复制链接]
发表于 2016-11-3 09:24:28 | 显示全部楼层 |阅读模式
    上章讲了怎么创建一个基本的神经网络,那么这章就来讲讲神经元之间的数据传递与处理,先构建如下的神经网络:     
  1. Neuron neuron1=new Neuron();
  2.    Neuron neuron2=new Neuron();
  3.    Neuron neuron3=new Neuron();
  4.    Connection connection13=new Connection(neuron1, neuron3,0.7);
  5.    neuron3.addInputConnection(connection13);
  6.    Connection connection23=new Connection(neuron2, neuron3,0.8);
  7.    neuron3.addInputConnection(connection23);
复制代码
    先来看下数据传递的方向neuron1和neuron2将数据共同传给了neuron3,所以neuron1和neuron2接收外部数据,neuron3要对两个数据进行处理最后输出:
  1. neuron1.setOutput(0.6);
  2.    neuron2.setOutput(0.5);
  3.    neuron3.calculate();
  4.    println(neuron3.getOutput());
  5.    println();
复制代码
     控制台输出了1.0,在默认情况下neuron3对neuron1和2的所传来的数据的处理方式就是将他们两个的输出值乘以他们权重的和,然而输出的结果不是0.82却是1.0。这是为什么?下面来详解一下神经元内部。      神经元内部由两个区域组成,一块区域用来处理外部接收到的信息,neuron3接受neuron1和2的数据,这里默认的处理方式是两个的输出值乘以他们权重的和,当然我们可以自定义处理方式,这个后面会说。还有一块区域用来处理新得出的数据,处理方式是使用激活函数,激活函数简单来说就是使输出结果在自己需要的范围之内,常用的激活函数有simoid,tanh,ReLu,softplus,大家有兴趣可以查查他们的函数图形。在默认情况下,neuron对象的激活函数是当x>0时y=1,x<=0时y=0,所以这里的0.82大于0,所以neuron3的输出值是1。这里可以说是我们把模拟量转化成了数字量,不论neuron1和neuron2的输出值是多少,我们都得到的都是0或1,成千上万个0和1能做很多事情,比如一台计算机的最底层也是0和1。
QQ截图20161103085638.png
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|联系我们|极客工坊 ( 浙ICP备09023225号 )

GMT+8, 2019-11-17 16:46 , Processed in 0.048407 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表