声明
本文章基于哔哩哔哩付费课程《小白也能听懂的人工智能原理》。仅供学习记录、分享,严禁他用!!如有侵权,请联系删除
目录
二、编程实验--keras搭建全连接神经网络尝试mnist数据集
一、知识引入
(一)mnist手写体识别
1、灰度值
mnist数据集的图片采用的是28*28的灰度图(一行有28个像素点,一共有28行,每一个像素用1字节的无符号数表示它的等级,0为最暗-纯黑色;最大值255为最亮-纯白色;中间值就是介于纯白和纯黑之间的灰色)通过不同像素点的灰度值,来显示图像。
2、如何将图片数据送入神经网络
神经网络的输入是一个多维数组,即一个向量。
图片是方形灰度值的集合。
我们将像素从头到尾一行一行一次拉出来,拉出784个像素,每个像素都是一个灰度值,形成一个784维的向量,即一个有784个元素的数组。
3、训练集
在训练时使用的数据集。
4、测试集
在训练集数据之外,拿出一些新的数据进行预测。考验模型是否具有足够的“泛化能力”。
5、机器学习中的3种常见现象
(1)欠拟合:在训练集上的准确率过低。
(2)过拟合:在训练集上的准确率很高,在测试集上的准确率出现了明显的下降。说明模型的泛化能力较差,很难推而广之。
- 用了过分复杂的模型,去拟合实则比较简单的问题,在训练集上追求过分精确的拟合,导致模型在新问题中的表现反而没有那么好
- 类比人类,在学习中死记硬背,而不是理解问题。
(二)卷积神经网络
1、卷积是怎么工作的?
利用一个8*8的灰度图举例,总共有64个像素点,每一个像素点就是0-255之间不同数字,所以我们可以看做是一个8*8的矩阵,即一个二维数组。
手动构建一个3*3的小矩阵,从左上角开始,对应元素相乘。
再把结果相加,得到一个新的值。
完成以后再把这个小的向右挪动一个,同样和大的对应元素相乘,再相加,又得到一个值。
再向右挪动。
重复这个过程,直至到达最右端。然后回到最左段,并且向下挪动一个,从左到右,再来一遍。
顶到头后,再回到最左边,继续向下挪动一个。按照这个模式,直到顶到最下方、最右方为止。
新值按照位置排列后,得到一个6*6的新图片。
而这个3*3的小矩阵,也就是“卷积核”,有时也被称为“过滤器”。
2、卷积核的作用
实际上是用来做轮廓、纹理等特征提取
卷积核的值应该取多少?
其实,随机初始化卷积核内部的值,卷积核的值也是通过训练学习而来的,通过训练找到合适的卷积核去提取不同的特征。
3、卷积层
做卷积运算的一层,称之为卷积层
4、卷积核的反向传播
误差代价如何传到卷积层?
(1)参数共享
如下图,一个4*4的图像,使用3*3的卷积核,卷积的过程就是卷积核依次和局部数据对应元素相乘再相加,得到一个值。
类比普通神经元的工作模式:局部数据时输入数据x,卷积核上的值看做是对应输入数据的权值参数w,对应元素相乘再相加。
正是一个9个输入+1个输出的普通神经元