在手写数字识别神经网络实例中,是怎么把图片变成数字的?手写数字神经网络数值维度怎么传递的?
我们手写的数字,展现出来是一张图片,但是我们神经网络最后输入的0-9的数字,中间究竟是怎么演变的。神经网络是怎么工作的,让我们来深入了解一下吧。
1.把图片转换成数组,图片是28*28像素的图片,因为是黑白图片,每个像素用0-255,在具体程序中,把0-255的数字转换成0.01-0.99间的小数,为什么是0.01,因为程序中乘积传递数据的,0乘以任何数都为0,数据就没办法变化,就没办法传递了。
inputs = (np.asfarray(all_values[1:]) / 255 * 0.99) + 0.01
这里转换成的是784*1的矩阵,是而不是28*28,是为了方便计算。是不是必须转成n多行,1列的的矩阵呢?不一定,主要是看你后面怎么计算的需要,比如用卷积方法,就完全不用。其实不管点积和卷积,都是把一个大的矩阵变小,或者说就是降维。
2.把784*1的矩阵变成200*1的矩阵。在这个变化过中,实例用的是点积法(numpy.dot())方法。在两个过程点积过程中,有这么一条规则,numpy.dot(m*n,n*l),就是用m*n维的矩阵和n*l维的矩阵点