一、代码实现原理解析
众所周知,CNN初始是用在计算机视觉上的,其在图像处理领域取得很好的效果,但是在自然语言处理领域CNN的表现也不俗。CNN在原理方面很多的资料都讲解的很清楚。接下来我将从代码的角度解析其原理。
CNN就是对一个图像采用卷积与采样的策略,将一张图像压缩表示,而不改变其原来的意思。即利用卷积的策略提取特征。
下图表示的是CNN的实现架构。CNN包括原始输入层、卷积层、隐层、softmax层。如下图所示,假设每个batch有20张图,初始图的大小的28*28大小,每个图有一个feature map。 所以下图蓝色的框图中的四维张量表示的是(batchsize,feature map,image_higth,image_width),下图红色框图表示的是卷积过滤器的配置,红色框图中表示的是(FilterSize,feature map,,Filter_higth,Filter_width)。通过多次的卷积与降采样,结果产生一个一维的feature map。然后将产生的这一维特征作为倒数第二层的输入,然后将倒数第二层的输出送入softmax层进行分类。非线性层与softmax层组合成MLP多层感知机。