从文档中,我知道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
中,可分离卷积仅使用过滤器工作,不使用偏差,最后添加单个偏差向量。另一方面,第二个版本对DepthwiseConv2D
和Conv2D
都有偏见。
鉴于卷积是线性运算,并且您在深度方向和1x1卷积之间没有使用非线性,因此我认为在这种情况下不需要两个偏置,这与在随后的图层中不使用偏置类似例如,批量标准化。这样,额外的10个参数实际上并不会改善模型(它们也不会真正损害两者)。
关于keras - DepthwiseConv2D和SeparableConv2D之间的区别,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56764162/