下午好!在输入卷积神经网络(输入层)的第一阶段,我们接收源图像(因此是手写英文字母的图像)。首先,我们使用一个nxn窗口,从左到右扫描图像和内核上的乘法(卷积矩阵)来构建特征映射?但是没有人写过内核应该具有的确切值(换句话说,我应该将从n * n窗口中检索的数据乘以内核值)。是否适合在这个用于边缘检测的卷积核上加倍数据?有许多卷积核(浮雕,高斯滤波器,边缘检测,角度检测等)?但是没有任何地方写到需要多大的数据来检测手写符号。
Sample of Edge detection 3*3 kernel
Convolutional operation for multiplication on kernel
另外,如果整个图像的尺寸是30 * 30,那么建筑特征地图可以使用5 * 5的窗口吗?它是否足以达到最佳的字母检测精度?
在什么样的内核上最好将整个图像的面积相乘以获得字母识别的最大精度?或者最初内核中的所有值都等于0?我还可以问一下,应用什么公式或规则来检测要构建的特征地图所需的总量?或者,如果任务是英文字母识别,那么在特征地图构建过程的每个阶段都必须有精确的25个特征图?谢谢你的回复!
答案 0 :(得分:2)
在CNN中,卷积核是一个共享权重矩阵,并以与其他权重类似的方式学习。它以相同的方式初始化,具有小的随机值,并且来自反向传播的权重增量在接收其输出的所有特征(即,通常在卷积层的输出中的所有"像素")之间相加。
典型的随机内核会像边缘检测器一样执行。
训练后,可以显示第一个CNN图层,如果您熟悉图像处理,通常会学习一些可以解释的内核
这里有一个很好的内核功能动画视图:http://cs.nyu.edu/~yann/research/sparse/
简而言之,你的答案就是:没有必要寻找正确的内核来使用。相反,寻找一个CNN库,你可以在其中设置诸如卷积层数之类的参数,并研究在他们学习时查看内核的方式 - 大多数CNN库都有一个记录的方式来可视化它们。