参考博客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: