Python神经网络代码识别手写字具体流程(二):矩阵的前向传播
2017-11-05 15:57
585 查看
在上一篇神经网络代码实现流程中,加载数据返回了三组数据:训练集,测试集,验证集.加载数据后,需要对神经网络代码的类进行实例化。
以下讲解,神经网络代码类的实现:
在类中,首先,在Network类的构造函数中,由实例化时传入的参数定义了神经网络的层数,每层的神经元个数,并利用随机函数对每层的神经元权重以及偏置进行初始化。
在构造函数中,相当于形成了神经网络的骨架,在实例化神经网络的类时,传入的参数是神经网络的结构,所以所有的权重,偏置,神经元都已经被定义好了。在上一节中,数据已经被加载成了标准的格式,到现在,我们可以把训练集输入进去,得到了一个输出的矩阵,当然,这个输出的矩阵并没有什么用。但是理解这个矩阵却能够理解前向传导的含义。
前向传播网络代码如下:
在以上的代码中,a为输入,在上一节中我们知道输入为(784*50000),经过以上的循环:经过第一个隐藏层,输出的a为(30*50000),在经过第二个隐藏层,得到的a为(10*50000)。当然,我们肯定不会这样使用神经网络将所有的数据一次向传入进去,只是用此说明一下前向网络的流程。
以下讲解,神经网络代码类的实现:
在类中,首先,在Network类的构造函数中,由实例化时传入的参数定义了神经网络的层数,每层的神经元个数,并利用随机函数对每层的神经元权重以及偏置进行初始化。
def __init__(self, sizes): self.num_layers = len(sizes) #神经网络的层数,循环的时候会应用到 self.sizes = sizes #传入的神经网络的列表 self.biases = [np.random.randn(y, 1) for y in sizes[1:]] #生成的偏置的矩阵,形成到为一个列表,列表中的每一项都是一个矩阵。矩阵的维度与y相同 self.weights = [np.random.randn(y, x) for x, y in zip(sizes[:-1], sizes[1:])] #形成的权重的列表,(如果输入层为第0层的话,列表中的第i个矩阵的维度为:(第i层的神经元个数)*(i—1层神经元个数))。其中,随机化生成的矩阵符合标准正态分布。
在构造函数中,相当于形成了神经网络的骨架,在实例化神经网络的类时,传入的参数是神经网络的结构,所以所有的权重,偏置,神经元都已经被定义好了。在上一节中,数据已经被加载成了标准的格式,到现在,我们可以把训练集输入进去,得到了一个输出的矩阵,当然,这个输出的矩阵并没有什么用。但是理解这个矩阵却能够理解前向传导的含义。
前向传播网络代码如下:
def feedforward(self, a): for b, w in zip(self.biases, self.weights): a = sigmoid(np.dot(w, a)+b) return a
在以上的代码中,a为输入,在上一节中我们知道输入为(784*50000),经过以上的循环:经过第一个隐藏层,输出的a为(30*50000),在经过第二个隐藏层,得到的a为(10*50000)。当然,我们肯定不会这样使用神经网络将所有的数据一次向传入进去,只是用此说明一下前向网络的流程。
相关文章推荐
- Python神经网络代码识别手写字的实现流程(一):加载mnist数据
- 《神经网络与深度学习》第一章 使用神经网络来识别手写数字(三)- 用Python代码实现
- 神经网络代码识别手写字(python3.4.3版本)
- Python神经网络代码实现流程(三):反向传播与梯度下降
- Python与人工神经网络:使用神经网络识别手写图像介绍
- Python与人工神经网络(2)——使用神经网络识别手写图像
- Tensorflow框架下识别手写字神经网络代码
- 四、用简单神经网络识别手写数字(内含代码详解及订正)
- Python实现深度学习之-神经网络识别手写数字(更新中,更新日期:2017-07-12)
- 手把手入门神经网络系列(2)_74行代码实现手写数字识别
- 手把手入门神经网络系列(2)_74行代码实现手写数字识别
- 手把手入门神经网络系列(2)_74行代码实现手写数字识别
- 手把手入门神经网络系列(2)_74行代码实现手写数字识别
- 手把手入门神经网络系列(2)_74行代码实现手写数字识别
- 十一行Python代码实现一个误差逆传播(BP)神经网络
- 用python的numpy实现神经网络 实现 手写数字识别
- 手把手入门神经网络系列(2)_74行代码实现手写数字识别
- python Tensorflow三层全连接神经网络实现手写数字识别
- python在线神经网络实现手写字符识别系统
- 神经网络学习(七)MNIST手写字识别 --- Python实现