从文档中,我知道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
默认情况下不在深度方向使用偏差?
谢谢。
答案 0 :(得分:1)
正确,检查源代码(我对tf.keras
进行了此操作,但我对独立keras
进行了验证)表明,在SeparableConv2D
中,可分离的卷积仅使用过滤器工作,没有偏差,最后添加一个偏差向量。另一方面,第二个版本对DepthwiseConv2D
和Conv2D
都有偏见。
考虑到卷积是线性运算,并且在深度方向和1x1卷积之间没有使用非线性,因此我认为在这种情况下不需要两个偏置,类似于在层上不使用偏置的方式例如,随后进行批量归一化。这样,额外的10个参数实际上并不会改善模型(它们也不会真正损害模型)。