keras - 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
默认情况下不使用深度阶段的偏差?
谢谢。
解决方案
正确,检查源代码(我这样做是为了tf.keras
但我认为它是相同的独立keras
)表明,在 中SeparableConv2D
,可分离卷积仅使用过滤器,没有偏差,并且最后添加了单个偏差向量。另一方面,第二个版本对DepthwiseConv2D
和都有偏见Conv2D
。
鉴于卷积是一种线性运算,并且您在深度卷积和 1x1 卷积之间没有使用非线性,我认为在这种情况下不需要有两个偏差,类似于您在后面的层中不使用偏差的方式例如,批量标准化。因此,额外的 10 个参数实际上并不会改善模型(它们也不应该真正受到伤害)。
推荐阅读
- node.js - Mongodb和nodejs根据当前值更新值
- ruby - ActiveRecord Rails 4 的默认阅读器
- typescript - TypeScript:TS2352:“Type”可以用与“TreeNode”无关的任意类型实例化
' - php - Laravel 中的 SESSION 用于页面保护
- javascript - 如何从多个过去的页面 JavaScript 中获取字符串 URL
- c - c中分配的混乱
- python - 在 AWS 上使用 python 连接到服务器
- google-sheets - Google 表格中的货币条件格式
- highcharts - Highcharts - 有没有办法为某些元素禁用样式模式?
- sql - 如何使用 PIVOT 按日期排列数据