(13) 运行代码Neuron_Network_Entry.py
接下来,我们从零起步在框架中编码实现Forward Propagation功能,将新增ForwardPropagation.py代码,实现的目录结构代码如图所示:
图 2- 5 Create_AI_Framework_In5Classes(Day2)
先运行一下上一节Neuron_Network_Entry.py的代码,当隐藏层hidden_layers = [8,4,2]时,运行结果如下:
+1 V1 V2
以上运行结果创建了3个隐藏层,第1个隐藏层有8个神经元, N[i][j]中第1列的索引代表是第i个隐藏层,第2列的索引代表神经元具体的索引j,第2个隐藏层有4个神经元,第3个隐藏层有2个神经元。这个和Tensorfow的可视化图中的第1个隐藏层有8个神经元,第2个隐藏层有4个神经元,第3个隐藏层有2个神经元是完全一样的。 Tensorfow的输入层有2个神经元,而我们这里的输入也是2个神经元,根据instances第一列的数据和第二列的数据得出第3列的数据,Exclusive OR计算只有第一个元素和第二个元素不同的时候,结果才是1,第一个元素和第二个元素相同的时候,结果为0。这个数据是我们输入系统的,但系统并不知道要进行Exclusive OR的计算,我们进行神经网络的训练,就是让系统清楚的预测到第1列、第2列的某种关系,得出第3列到底是0还是1。读者可能认为这里只有4行数据,实际环境中可能有上TB的数据,但是系统的精髓都是一样的,上百万条数据、上亿条数据理解和这个是完全一样的。
这个数据是我们输入系统的,但系统并不知道要进行Exclusive OR的计算,我们进行神经网络的训练,就是让系统清楚的预测到第1列、第2列的某种关系,得出第3列到底是0还是1。读者可能认为这里只有4行数据,实际环境中可能有上TB的数据,但是系统的精髓都是一样的,上百万条数据、上亿条数据理解和这个是完全一样的。根据第1列、第2列的某种关系,得出第3列,开始是训练,训练的时候有误差,然后调整误差,调整误差是Back Propagation的过程,看看预测的值和实际的值是否一致,误差有多大,BackPropagation是从后向前推,看哪些因素导致了误差以及误差的程度,下一次将表现的更好。BackPropagation将在后续章节讲解。这一节讲解Forward Propagation的过程,从输入层的2个Feature出发,到第一个隐藏层的8个神经元,再到第二个隐藏层的4个神经元,再到第三个隐藏层的2个神经元,最后得出输出层的1个神经元,这个过程和Tensorflow的可视化图中的过程是完全一样的。
All the data are the same,所有的数据都是没有区别的。如果能处理0,1,2,3,4,5,6,7,8,9的数字,就能处理图片、音频、视频的数据,它们没有区别。声音、图片的处理也是类似转换为0,1,2,3,4,5,6,7,8,9的数字处理,图片转变是通过CNN处理,CNN的核心是处理图片的时候,将其变成最基本的数据。数据是没有区别的。
接下来编写代码,我们的目标是从输入层Input Layer出发,经过所有的隐藏层Hidden Layers的处理,最终得出输出层Output Layer的结果。我们需迈开第一步,虽然走的是一小步,但这一小步是我们人工智能领域的一大步, 因为我们将完成Forward Propagation的功能。
欢迎关注微信公众号:“从零起步学习人工智能”。
喜欢我们发布的信息,就在右下角点一下“在看”吧!欢迎转发分享!