首页 > 解决方案 > DepthwiseConv2D 和 SeparableConv2D 的区别

问题描述

从文档中,我知道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默认情况下不使用深度阶段的偏差?

谢谢。

标签: keras

解决方案


正确,检查源代码(我这样做是为了tf.keras但我认为它是相同的独立keras)表明,在 中SeparableConv2D,可分离卷积仅使用过滤器,没有偏差,并且最后添加了单个偏差向量。另一方面,第二个版本对DepthwiseConv2D和都有偏见Conv2D

鉴于卷积是一种线性运算,并且您在深度卷积和 1x1 卷积之间没有使用非线性,我认为在这种情况下不需要有两个偏差,类似于您在后面的层中不使用偏差的方式例如,批量标准化。因此,额外的 10 个参数实际上并不会改善模型(它们也不应该真正受到伤害)。


推荐阅读