首先我们举一个简单的例子。
我们假设一个1✖1的卷积核,里面的数字为2。输入一张6✖6✖1的图片,然后对它做卷积,其过滤器大小为(卷积核)1✖1✖1。结果显而易见,即相当于把这个图片乘以数字2。用1✖1的过滤器进行卷积似乎用处不大。只是对输入矩阵乘以某个数字。
但这仅仅是对于6✖6✖1的通道图片来说,1✖1卷积效果不佳。如果是一张6✖6✖32的图片,那么使用1✖1过滤器进行卷积效果更好。具体来说1✖1卷积实现的功能是,遍历这36个单元格,计算图中32个数字和过滤器中32个数字的元素乘积,然后应用Relu非线性函数。
这个1✖1✖32过滤器中的32个数字可以这样理解,一个神经元的输入是32个数字,乘以相同高度和宽度上某个切片上的32个数字,这32个数字具有不同通道,乘以32个权重然后应用Relu非线性函数,输出相应的结果。一般来说,如果过滤器不止一个,就好像有多个输入单元,其输入内容为一个切片上的所有数字,那么输出结果就是6✖6✖过滤器数量。所以1✖1卷积可以从根本上理解为,这32个单元都应用了一个全连接神经网络,全连接层的作用是输入32个数字和过滤器数量,以便在输入层上实施一个非平凡计算,这种方法通常称为1*1卷积。
举个例子,相信对大家有所帮助。假设这是一个28✖28✖129的输入层。
你可以使用池化层压缩它的高度和宽度,但是如果通道数量过大,该如何把它压缩为28✖28✖32维度的层呢?你可以用32个大小为1✖1的过滤器。严格来讲,每个过滤器的大小都是1✖1✖192维,因为过滤器中通道的数量必须与输入层中通道数量相同。因此使用1✖1✖32卷积可以输出28✖28✖32。这就是压缩通道数的方法,然而对于池化层我们只是压缩了这些层的高度和宽度。
接下来我们来看看在某些网络中1✖1卷积是如何压缩通道数量并减少计算的,当然如果你愿意,也可以通过1✖1卷积增加通道数量,后面你会发现这对构建Inception网络很有帮助。