基于python手写深度学习网络系列(4)神经网络结构化

基于python手写深度学习网络系列(4)

神经网络结构化

基于python手写深度学习网络系列(4)神经网络结构化
这是比较结构化的神经网络,forward代表前向,因为后边可能还会有后向的反馈。
最后的输出函数,回归问题用恒等函数,分类问题用softmax函数。
基于python手写深度学习网络系列(4)神经网络结构化
有可能出现溢出问题,解决方法如下:
基于python手写深度学习网络系列(4)神经网络结构化
这里的C’可以用任意数值,但一般选择输入信号中的最大值
基于python手写深度学习网络系列(4)神经网络结构化
这个softmax函数不会改变元素之间的大小关系,因为exp是递增函数。
机器学习首先使用训练数据进行权重参数的学习,再用刚才学到的参数进行推理分类
MNIST有六万张训练,一万张测试,是我们最常用的数据集,许多论文里也会用这个作为验证,这里我们导入数据进行验证
基于python手写深度学习网络系列(4)神经网络结构化
最终导入数据的结果如下所示
基于python手写深度学习网络系列(4)神经网络结构化
提示一下:由于节点原因,下载的时候可能会比较慢,入股哦直接导入无法成功,可以尝试寻找相关资源,然后设置路径读取就可以。
第1个参数normalize设置是否将输入图像正规化为0.0~1.0 的值。如果将该参数设置为False,则输入图像的像素会保持原来的0~255。第2 个参数flatten设置是否展开输入图像(变成一维数组)。如果将该参数设置为False,则输入图像为1 × 28 × 28 的三维数组;若设置为True,则输入图像会保存为由784个元素构成的一维数组。第3个参数one_hot_label设置是否将标签保存为onehot表示(one-hot representation)。one-hot 表示是仅正确解标签为1,其余皆为0 的数组,就像[0,0,1,0,0,0,0,0,0,0]这样。当one_hot_label为False时,只是像7、2这样简单保存正确解标签;当one_hot_label为True时,标签则保存为one-hot 表示。最开始的语句时添加到目录Python的pickle功能,可以将程序运行中的对象保存为文件。
基于python手写深度学习网络系列(4)神经网络结构化
将numpy数组的图像数据转换为PIL用的数据对象,使用image.fromarray来完成
进行推理处理并评价识别精度
Np.argmax(x)函数可以取出数组中最大值的索引
最终结果:
基于python手写深度学习网络系列(4)神经网络结构化
基于python手写深度学习网络系列(4)神经网络结构化
一张图像的处理流程如下:
基于python手写深度学习网络系列(4)神经网络结构化
批处理的优势:大多数处理数值计算的库都进行了能够高效处理大型数组运算的最优化
改成批处理的代码
基于python手写深度学习网络系列(4)神经网络结构化
Range函数,生成的是列表
Range(start,end,step)可以省略step,直接生成一个由start到end-1之间的整数构成的列表。有了step,生成的列表中下一个元素会增加step指定的值。
基于python手写深度学习网络系列(4)神经网络结构化
其中参数Axis = 0 就是找每一列的最大值

这样我们就实现了一个比较结构化的神经网络,并对手写数字识别进行了预测,但是并没有对参数进行学习,下一篇文章来实现神经网络的学习!