从文档中,我知道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默认情况下不在深度方向使用偏见?

谢谢。

最佳答案

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

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

关于keras - DepthwiseConv2D和SeparableConv2D之间的区别,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56764162/

10-10 19:30