1、所谓的卷积操作,其实可以看作一种模板匹配的过程。卷积核就是模板,特征图则是这个模板匹配的结果显示。
2、池化操作则是一种对原始图像进行更大尺度的特征提取过程,它可以提取出数据中的高尺度信息。将卷积和池化交替组装成多层的卷积神经网络模型,便有了强大的多尺度特征提取能力。
卷积运算:就是在原始图像中搜索与卷积核相似的区域,即用卷积核从上到下地进行逐个像素的扫描和匹配,并最终将匹配的结果表示成一张新的图像,这个新的图像通常称为特征图
假设原始图像的size为n,卷积核的宽度为w,那么特征图的大小一般是(n-w+1)*(n-w+1),所以特征图会比原始图像要小一些。如果不想想让特征图变小,就需要采用补齐(padding)技术将原始图扩大,并用0来填充补充的区域。
3、池化的作用实际上就是获取粗粒度信息的过程,因此它可以将原始图变小(也就是特征降维)。它在一定程度上能防止过拟合的发生。
4、迁移学习:通过使用之前在大数据集上经过训练的预训练模型,我们可以直接使用相应的结构和权重,将它们应用到我们正在面对的问题上。这被称作是“迁移学习”,即将预训练的模型“迁移”到我们正在应对的特定问题中。(迁移学习就是一种将一个领域训练的机器学习模型应用到另外一个领域中的技术手段,它在某种程度上增加了训练模型的利用率,解决了数据稀缺的问题。)
5、PyTorch 采用的是动态图机制 (Dynamic Computational Graph),而 Tensorflow 采用的是静态图机制 (Static Computational Graph)。
动态图是运算和搭建同时进行,也就是可以先计算前面的节点的值,再根据这些值搭建后面的计算图。优点是灵活,易调节,易调试。PyTorch 里的很多写法跟其他 Python 库的代码的使用方法是完全一致的,没有任何额外的学习成本。
静态图是先搭建图,然后再输入数据进行运算。优点是高效,因为静态计算是通过先定义后运行的方式,之后再次运行的时候就不再需要重新构建计算图,所以速度会比动态图更快。但是不灵活。TensorFlow 每次运行的时候图都是一样的,是不能够改变的,所以不能直接使用 Python 的 while 循环语句,需要使用辅助函数 tf.while_loop 写成 TensorFlow 内部的形式。
6、更多请参考链接:https://zhuanlan.zhihu.com/p/138068036
常见入门小白问题:
1、卷积神经网络中的神经元可以看作输入图像或者特征图像的一个神经元吗?
答:在输入层,这两者是一一对应的,把每个像素当成一个输入神经元。在后续的网络中,特征图上的一个像素就是一个神经元。