手写数字识别是神经网络经典案例之一,该项目数据集小、神经网络简单、任务简单,但是集合了CNN网络中几乎所有该有的东西。下面是该项目的大致流程。
首先,导入必要的库以及加载数据集,并且区分开数据集以及训练集。紧接着,对数据进行预处理,将图像变为原来的28像素*28像素的形状,可以通过reshape()方法的参数指定期望的形状,更改NumPy数组的形状。然后对MNIST数据集实现神经网络的推理处理,输入层为784个神经元,输出层有10个神经元,此外这个神经网络共有2个隐藏层,第一层为50个神经元,第二层有100个神经元。我们定义一个函数实现神经网络的推理过程,并且评价它的识别精度。识别精度指神经网络所预测的答案正确个数与正确解标签的比值。以上就是MNIST数据集的神经网络的实现。
同一个分类任务,我们也可以用机器学习的算法来做,在用机器学习算法来做时,首先要明确feature和label,即我们需要实现确定好特征,特征数目过少,我们可能无法精确的分类出来,如果特征数目过多,又可能会由于我们在分类过程中赋予某个特征不恰当的权重导致分类错误,即过拟合。而神经网络的出现使我们不需要做大量的特征工程,我们可以直接把数据放进去,让它自己训练,自我“修正”,即可得到一个较好的效果。