好久没更了,营个业。最近的感想如图。走个程序,写一下神经网络的结构,给真的刚刚刚入门的胖友们。目前写的都很简单,这也是我自己的学习笔记。我是小白,我猜小白更懂小白(手动滑稽)。
——————————————╭(●`∀´●)╯╰(●’◡’●)╮ (●’◡’●)ノ ——————————————————
1 神经网络基本结构
1.1神经网络有哪些层
这一节会给出一些关于网络的基本术语,首先看这个网络:这是一个三层的神经网络,非常简单。从左到右依次是一二三层。第一层输入数据,我们叫它输入层,这层的神经元我们称之为输入神经元;第三层产生输出,我们叫它输出层,把这层神经元叫输出神经元。而中间的层,既不输入,也不输出,凡是这样的层,我们叫它隐藏层。
注意,输入层和输出层都是只一层,但隐藏层不是某一层,是所有非输出和输入的层。
看完了这个三层的,我们再来看一个四层的网络:
和上面一样的结构,输入层,输出层和隐藏层。
以上的这些网络,都是第二节中讲到的S神经元构成的。但是这样的多层网络被称为多层感知机(MLP)。这个名字很容易让人联想到第一节中的感知器神经元,但一定要记住,他们没关系。
1.2 输入层与输出层传递些什么
输入层和输出层的设计一般都比较直接。输入层是我们手中的数据,输出层可以是一个数。
比如用神经网络来识别手写数字,用MNIST手写数字集的话,输入是一副784个像素点组成的图像的灰度值,即输入层需要784个神经元,每一个对应一个像素点的灰度值(先对0-255的灰度值做一个归一化)。在这里,0.0表示白色,1.0表示黑色,而处于其中的数值表示中间不同程度的灰色。而输出则是一个数或一个列向量。表明这个数是不是我们指定的某一个数字,或者是0-9中具体哪一个数字。
举例: 拿仅有一层隐藏层的网络举例,我们用它来识别某个MNIST手写数字集中的图像时0-9中哪一个数字。这里隐藏层的神经元数目设置为n,这里设置只有一层,且n=15,之后我们可以通过在代码中修改n值来直接修改隐藏层的数目和其中神经元的数目。
输入是一张28*28的灰度图像,而输出是识别结果。这里的结果表示其为各个数字的概率。其中,如果某一个数字对应位置的输出值趋近于1,那么我们认为这个图片被神经网络判别为这个数。
End。