MNIST 数据集来自美国国家标准与技术研究所, National Institute of Standards and Technology (NIST).。训练集 (training set) 由来自 250 个不同人手写的数字构成,其中 50% 是高中学生,50% 来自人口普查局 (the Census Bureau) 的工作人员。测试集(test set) 也是同样比例的手写数字数据。
MNIST 数据集可在 http://yann.lecun.com/exdb/mnist/ 获取, 它包含了四个部分:
Training set images: train-images-idx3-ubyte.gz ( 包含 60,000 个训练样本)
Training set labels: train-labels-idx1-ubyte.gz (包含 60,000 个训练标签)
Test set images: t10k-images-idx3-ubyte.gz (包含 10,000 个测试样本)
Test set labels: t10k-labels-idx1-ubyte.gz (包含 10,000 个测试标签)
在实际训练与学习的过程中,我们会用训练集的784(28*28)个像素形成的矩阵作为输入(共含有60000个),以及10个判断结果(数字0到9的对应数组,响应的数字处为1,其余为0)作为输出(也是60000个),来进行计算。
他们都是数字7,但显然又各不相同。神经网络的神奇之处就是在于,能够识别出那些没有固定答案的答案。
在之前的学习中,我们已经了解了Python的类与对象的使用。那么现在,我们实现一个名为TwoLayerNet的2层神经网络的类。
TwoLayerNet的变量包括:
1. params: 保存神经网络的参数的字典型变量
params[‘W1’]是第一层的权重, params[‘b1’]是第一层的偏置;以此类推。
2. grads: 保存梯度的字典型变量
grads[‘W1’]是第一层权重的偏置, grads[‘b1’]是第一层偏置的梯度;以此类推。
TwoLayerNet的方法包括:
1. init (self, input_size, hidden_size, output_size): 进行初始化,输入参数包括输入层的神经元数量,隐藏层的神经元数量,输出层的神经元数量;
2. predict(self, x): 进行识别,前向推理过程;
3. loss(self, x, t): 计算损失函数,x是图像数据,t是正确解的标签;
4. accuracy(self, x, t): 计算识别精度;
5. numerical_gradient(self, x, t): 计算权重参数的梯度;
神经网络的mini-batch实现方法为:


版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/163842.html