NeuronBlack 发表于 2016-11-3 09:24:28

processing神经网路(2)

    上章讲了怎么创建一个基本的神经网络,那么这章就来讲讲神经元之间的数据传递与处理,先构建如下的神经网络:   http://www.geek-workshop.com/forum.php?mod=image&aid=32903&size=300x300&key=bd868308427a4da8&nocache=yes&type=fixnone
Neuron neuron1=new Neuron();
   Neuron neuron2=new Neuron();
   Neuron neuron3=new Neuron();
   Connection connection13=new Connection(neuron1, neuron3,0.7);
   neuron3.addInputConnection(connection13);
   Connection connection23=new Connection(neuron2, neuron3,0.8);
   neuron3.addInputConnection(connection23);   先来看下数据传递的方向neuron1和neuron2将数据共同传给了neuron3,所以neuron1和neuron2接收外部数据,neuron3要对两个数据进行处理最后输出:
neuron1.setOutput(0.6);
   neuron2.setOutput(0.5);
   neuron3.calculate();
   println(neuron3.getOutput());
   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。

jinbo 发表于 2020-9-17 17:27:21

楼主不继续写了吗?很期待啊!
页: [1]
查看完整版本: processing神经网路(2)