我正在阅读François Chollet的“使用 Python 进行深度学习” 。他提到了可分离卷积如下
这相当于将空间特征的学习和通道特征的学习分开,如果你假设输入中的空间位置高度相关,但不同的通道是相当独立的,这很有意义。
但我无法理解他所说的“相关空间位置”是什么意思。有人可以解释他的意思或可分离卷积的目的吗?(性能相关部分除外)。
编辑:可分离卷积意味着首先应用深度卷积,然后应用点卷积。
我正在阅读François Chollet的“使用 Python 进行深度学习” 。他提到了可分离卷积如下
这相当于将空间特征的学习和通道特征的学习分开,如果你假设输入中的空间位置高度相关,但不同的通道是相当独立的,这很有意义。
但我无法理解他所说的“相关空间位置”是什么意思。有人可以解释他的意思或可分离卷积的目的吗?(性能相关部分除外)。
编辑:可分离卷积意味着首先应用深度卷积,然后应用点卷积。
问题的背景
这是问题中引用的文本的链接。
它指的是SeparableConv2D(tf,keras名称)的用法。StackOverflow 上的一个相关问题是“ SeparableConv2D 和 Conv2D 层有什么区别”。这个答案指向了 Chi-Feng Wang 的这篇优秀文章:
回答问题
在图像处理中,可分离卷积将 NxM 卷积转换为具有 Nx1 和 1xM 内核的两个卷积。使用这个想法,在 NN 中,SeparableConv2D 将 WxHxD 卷积(宽度 x 高度 x 深度,其中深度表示传入特征的数量)转换为具有内核 WxHx1 和 1x1xD 的两个卷积。
请注意,第一个内核不处理跨特征的信息,因此,它是“学习空间特征”。1x1xD 内核不处理不同的点,它是“学习通道特征”。
关于“输入中的空间位置高度相关”这句话,我对作者意思的理解是:假设我们有一个通道(特征)图像,每个像素测量“到背景的距离”。当我们从一个像素传递到相邻的像素时,期望值具有某种连续性(边缘像素除外):相关性。相反,如果我们有一个测量“亮度”的通道和另一个测量“到背景的距离”的通道,那么一个特定像素的两个值几乎没有相关性。
最后,关于标题问题“我们什么时候应该使用可分离卷积?” :如果最终输出必须以非常不可预测的方式依赖于一个像素的某些特征和相邻像素的某些其他特征,则必须使用完整的 WxHxD 卷积。但是,如果像往常一样,您可以处理第一个空间依赖关系(邻域)以提取像素特征,然后逐像素处理这些特征以获得输出,最好使用 WxHx1 后跟 1x1xD,节省大量网络参数,因此,节省了培训时间。