参考博客https://blog.csdn.net/u014365862/article/details/53868414
1数据说明:MNIST包
数据为:28*28*1 单通道28*28的0~9的数字图片;
训练数据60000张;测试数据10000张;并且每张图片对应的label是图片中显示的数字
train-images-idx3-ubyte 训练数据图像 (60,000)
train-labels-idx1-ubyte 训练数据label
t10k-images-idx3-ubyte 测试数据图像 (10,000)
t10k-labels-idx1-ubyte 测试数据label
2图示说明系统结构

前向回馈 将输入数据映射到0—1之间:net =np.dot(w,x)+b out =sigmoid(net);
反向传输修正w,b ; 像线性回归一样,先将误差函数求出来,然后求导修正W,B使得不断逼近目标值。
3矩阵大小
输入层到隐藏层w1:40*784;b1:40*1 ; 隐藏层到输出层w2:10*40 ;b2:10*1
4为什么要如下编码呢
因为经过sigmoid函数非线性映射后函数值的范围为(0,1),则将0—9的数字也映射为0,1形式
理想情况下输出表示数字的方式
理想情况下输出的十个神经元表示0:
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
理想情况下输出的十个神经元表示1:
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
理想情况下输出的十个神经元表示2:
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
实际情况以输出10个神经元中 数值最大的下标为表示数字值
实际情况下可能输出的十个神经元表示0:
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| 0.98 | 0.01 | 0 .01 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
实际情况下可能输出的十个神经元表示1:

这篇博客介绍了如何使用Python3.0实现单隐层人工神经网络(ANN)对MNIST数据集进行数字识别。内容包括MNIST数据集的说明、系统结构、权重矩阵大小、编码原理以及实际输出的解释。博主还提供了数据集获取链接和代码实现。
最低0.47元/天 解锁文章
1164

被折叠的 条评论
为什么被折叠?



