竭泽最近尝试学习新的东西,他想看看cnn,现在卡在池化了。
什么是池化?
池化的思想来自于视觉机制,是对信息进行抽象的过程。
池化层也称下采样层,会压缩输入的特征图,一方面减少了特征,导致了参数减少,进而简化了卷积网络计算时的复杂度;另一方面保持了特征的某种不变性(旋转、平移、伸缩等)。
池化操作(Pooling)是卷积神经网络中非常常见的一种操作,Pooling层是模仿人的视觉系统对数据进行降维,在构建卷积神经网络时,往往会用在卷积层之后,通过池化来降低卷积层输出的特征维度,有效减少网络参数的同时还可以防止过拟合现象。
池化如何进行?
下面一张图片我们就来演示池化的一种,max pooling(最大池化)的操作过程
假设我们有4 * 4的图像,每个图像有不同的像素值,这时候我们有一个2 * 2的池化核,并设定步长为2,那么此时我们会对左上角的2 * 2取最大值,作为池化的结果,然后向右平移一个步长,就是向右平移两个单位,得到下一个池化结果,当做完这一行运算,向下平移一个步长,继续做运算,依次类推。
总的来说,假设你有n * n的图像,m * m的池化核,你对图像中第一个m * m的部分图像做完池化操作后,平移一个步长单位,去做下一次池化操作,如果做完这一行的运算,就向下平移一个步长长度,继续运算,直到做完为止。
为了简化问题,本题默认步长为1。
上图是池化窗口为3 * 3,步长为1的池化结果
现在,竭泽给你一个n * m的图像,告诉你池化核的大小k * k, 请输出最大池化后的池化图像的行数和列数,并且输出池化结果
输入描述:
输入第一行,三个数字, n, m, k, 其含义如题所示。
n <= 50, m <= 50, 1 <= k <= 20, k <= n, m , 矩阵元素在int表示范围内
接下来n行为矩阵数据
输出描述:
先输出两个数字,表示池化后图像的尺寸(行和列),之后以矩阵的方式输出池化结果。
示例1
输入
复制
5 5 3
0 1 2 3 4
5 6 7 8 9
0 1 2 3 4
5 6 7 8 9
0 1 2 3 4