卷积层以及池化层的输出维度

在学习tensorflow时,总是对各种各样的参数烦的死去活来,尤其是卷积核的长宽高步长什么的,特别“迷人”。因此本人搜索了很多的资料,进行了综合,并加上了自己的理解,供大家学习参考。

一、输入的四个维度

1)batch_size:说白了,就是图片的个数。

2)height/weight:图片的高和宽。

3)channels:图片的通道数,黑白照片就是1,RGB就是3。

例如我们的输入是X =【333,28,28,3】,则代表我们有333个宽和高都是28的黑白照片(单通道照片)。

二、卷积核的四个维度

1)height/weight:卷积核矩阵的维度

2)inchannels:与输入的通道数相等。如何理解这个参数的意思呢?这个参数代表的是我们所操作的图像的通道数。例如,我们有上例的X的通道数为3,那这个inchannels也是3。我们要做的是,将这个卷积核分别与图片A的三个通道卷积,相加作为输出。

3)outchannel:输出的特征数。这个参数是自己选定的。

现在假设我们X=【333,28,28,3】的输入,W=【5,5,3,32】。那么输出是什么呢?首先输出图片数不变,仍是333。其次,我们先假设图片大小也不变(后文会讨论)。我们的操作是,对于任意333张中的任意一张图片A,用32个卷积核去卷积,这样我们每张图片就会得到32个特征,那么得到的新图片的通道数就是32(对应前面的RGB的通道数是3)。因此我们的得到的输出是【333,28,28,32】(假设得到的图片大小不变).如下图所示。

4)、步长的维度

步长的维度一般设置【1,a,a,1】。第一个和第四个分别代表跳过照片的数量和跳过维度的数量,因为我们要训练每一张照片和每一个维度,所以上述都设置为1(以上是我的猜测QAQ)。中间的则代表我们在照片长宽跳过的像素数。这里,网上有两个盛传的公式:

卷积:((W-F+2P)/S )+ 1

池化:(W-F)/S + 1.

例如池化矩阵的大小和步长都是2*2的。那么池化后的高:(28-2)/2 +1 = 14,宽:(28-2)/2 + 1 =14.

关于池化层和卷积层的参数问题就讲到这里。本文写的相当仓促,所以可能会有大量的漏洞和不足,望指正。

猜你喜欢

转载自blog.csdn.net/cpluss/article/details/81709998