卷积核个数和输入输出通道数的关系
思考的开始
为什么突然想起来这个了?卷积大家都太熟系,感觉不用多说了都,我也是这么觉得的。但是,今天发现一个问题,就是卷积操作完成从c1通道到c2通道的过程中,到底是需要多少卷积核?又是到底怎么卷的?
问题解决
回答下面的问题就可以顺利解决。
1.为什么卷积的效率高?
因为卷积的卷积核是可以进行复用的,所以就不需要训练很多参数,训练的参数少,可以加速拟合。所以,训练效率很高。可以节省很多计算量
2.输入的每个通道是否要每个指定一个卷积核?
既然是复用可以节省计算量,我们是否可以对所有的输入通道都复用一种卷积核?这个显然不行,因为这样在生成的所有内容当中,每个通道的贡献度都是一样的,可以理解成将其简单加和之后再乘上一个系数。那么这时候如果你在下一层又生成了一个多通道,那么结果将是,这些通道的之间的区别就是乘上了不同的系数而已,这些生成的通道相当于没有任何意义。
所以对于输入的不同意通道需要使用不同的卷积核。
3.输出是怎么输出的?
之前,我们已经说过了输入的通道,每个配一个卷积核,这样我们就会得到输入通道个数的输出。那么我们输出什么,直接将这些输出每个还作为独立的通道输出吗?这显然不对劲啊。这样相当于输出还是只考虑了一个输入的通道。所以还得将这些得到的通道融合起来。
4.所以怎么融合起来?
乘上一个可训练的系数加和吗?其实完全没有必要,因为一开始乘上的卷积和直接就能取代这个系数的作用,并且是针对各个元素的,比这个直接乘上一个针对卷积核大小范围内所有元素的,显然效果更好。
5.融合之后如何扩展到多通道?
显然之前我们使用加和操作进行融合,得到的结果就只剩下一个通道了,想要扩充成多通道,简单乘上一个系数显然没有意义。So we must use the output-channel kernel-groups which has the input-channel kernels per group。这个东西好像英文表述清楚一点。
结论
所以需要input-channel×output-channel个数的卷积核。
卷积核个数和输入输出通道数的关系
思考的开始
为什么突然想起来这个了?卷积大家都太熟系,感觉不用多说了都,我也是这么觉得的。但是,今天发现一个问题,就是卷积操作完成从c1通道到c2通道的过程中,到底是需要多少卷积核?又是到底怎么卷的?
问题解决
回答下面的问题就可以顺利解决。
1.为什么卷积的效率高?
因为卷积的卷积核是可以进行复用的,所以就不需要训练很多参数,训练的参数少,可以加速拟合。所以,训练效率很高。可以节省很多计算量
2.输入的每个通道是否要每个指定一个卷积核?
既然是复用可以节省计算量,我们是否可以对所有的输入通道都复用一种卷积核?这个显然不行,因为这样在生成的所有内容当中,每个通道的贡献度都是一样的,可以理解成将其简单加和之后再乘上一个系数。那么这时候如果你在下一层又生成了一个多通道,那么结果将是,这些通道的之间的区别就是乘上了不同的系数而已,这些生成的通道相当于没有任何意义。
所以对于输入的不同意通道需要使用不同的卷积核。
3.输出是怎么输出的?
之前,我们已经说过了输入的通道,每个配一个卷积核,这样我们就会得到输入通道个数的输出。那么我们输出什么,直接将这些输出每个还作为独立的通道输出吗?这显然不对劲啊。这样相当于输出还是只考虑了一个输入的通道。所以还得将这些得到的通道融合起来。
4.所以怎么融合起来?
乘上一个可训练的系数加和吗?其实完全没有必要,因为一开始乘上的卷积和直接就能取代这个系数的作用,并且是针对各个元素的,比这个直接乘上一个针对卷积核大小范围内所有元素的,显然效果更好。
5.融合之后如何扩展到多通道?
显然之前我们使用加和操作进行融合,得到的结果就只剩下一个通道了,想要扩充成多通道,简单乘上一个系数显然没有意义。So we must use the output-channel kernel-groups which has the input-channel kernels per group。这个东西好像英文表述清楚一点。
结论
所以需要input-channel×output-channel个数的卷积核。