DepthwiseConv2D和SeparableConv2D之间的区别

时间:2019-06-26 02:02:24

标签: keras

从文档中,我知道SeparableConv2D是深度操作和点操作的组合。但是,当我打电话

SeparableConv2D(100, 5, input_shape=(416,416,10) 

# total parameters is 1350

model.add(DepthwiseConv2D(5, input_shape=(416,416,10)))
model.add(Conv2D(100, 1))

# total parameters is 1360

这是否意味着SeparableConv2D默认情况下不在深度方向使用偏差?

谢谢。

1 个答案:

答案 0 :(得分:1)

正确,检查源代码(我对tf.keras进行了此操作,但我对独立keras进行了验证)表明,在SeparableConv2D中,可分离的卷积仅使用过滤器工作,没有偏差,最后添加一个偏差向量。另一方面,第二个版本对DepthwiseConv2DConv2D都有偏见。

考虑到卷积是线性运算,并且在深度方向和1x1卷积之间没有使用非线性,因此我认为在这种情况下不需要两个偏置,类似于在层上不使用偏置的方式例如,随后进行批量归一化。这样,额外的10个参数实际上并不会改善模型(它们也不会真正损害模型)。