在手写数字识别神经网络实例中,是怎么把图片变成数字的?手写数字神经网络数值维度怎么传递的?

本文探讨了在手写数字识别神经网络中,如何将28x28像素的黑白图片转换为数字。首先,图片被转化为784维的矩阵,并通过点积转换为200维的隐藏层。接着,利用权重矩阵进一步转换为10维输出,最大值对应的索引即为识别的数字。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在手写数字识别神经网络实例中,是怎么把图片变成数字的?手写数字神经网络数值维度怎么传递的?

 

我们手写的数字,展现出来是一张图片,但是我们神经网络最后输入的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维的矩阵点积,然后得到一个m*l的矩阵,这里两个的矩阵中的n必须是对应的。隐藏节点是200,所以numpy.dot(200*784,784*l),最后得到的是200*1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值