我看到很多网站都说我们可以用1x3conv+3x1conv代替3x3conv。
为了便于演示,我们以一个3x3图像为例。
从参数的角度来看,我知道我们会得到更少的参数,并得到相同的结果。
如果映像( 3x3 )执行3x3conv,我们将得到一个1x1标量,这个内核大小为3x3,意味着我们有9个参数。
另一方面,如果图像首先执行1x3卷积,然后对其输出执行3x1卷积。它将直观地得到相同的结果,一个1x1标量,这个内核大小是2x3x1 = 6,这意味着我们有6个参数。
然而,从计算时间的角度来看,我认为3x3不应该被1x3和3x1所取代。
例如,如果我们使用映像来执行3x3内核,我们应该执行9次像素级乘法操作,然后再执行一次加法操作。总共10次手术才能得到结果。
但是,如果我们使用映像(3x3)来执行3x1内核,我们必须实现3(乘)+1(加) *3次才能得到1x3特征映射,那么我们仍然需要执行1x3内核。然后它将采取3(乘)+1(添加)操作。在整个过程中总共进行了16次行动。
我想要展示的是,虽然我们将参数从3x3conv减少到3x1 &1x3conv,但是在训练过程中我们仍然需要更多的时间来计算。
培训花费了大量的时间,实现3x1和1x3并不能节省我们的时间。那么,我们应该用1x3 conv + 3x1 conv代替3x3 conv吗?
发布于 2018-12-20 08:56:47
3x3卷积可以做1x3后面的3x1不能做的事情,例如对角线滤波。
正如您所说,这都是关于参数的数量,第一个卷积比第二个解决方案有更多的能力。
https://datascience.stackexchange.com/questions/42932
复制相似问题