filter - 在卷积过程中翻转过滤器背后的直觉是什么?
问题描述
我看到,在使用 Theano 的 conv2d 函数时,过滤器在垂直和水平方向上都翻转了。这是为什么?在卷积神经网络的情况下是否重要?
解决方案
因为这是在数学上定义卷积的方式。没有过滤器的翻转,该操作称为互相关。卷积的优点是它具有更好的数学特性。
然而,在卷积神经网络的上下文中,使用卷积还是互相关并不重要,它们是等价的。这是因为过滤器的权重是在训练期间学习的,即更新它们以最小化成本函数。在使用互相关操作的 CNN 中,学习的过滤器将等于使用卷积操作的 CNN 的翻转学习过滤器(假设两者的训练条件完全相同,即相同的初始化、输入、时期数等.)。因此,对于相同的输入,这两个 CNN 的输出将是相同的。
互相关操作更直观,更易于实现(因为不执行翻转),这可能是其他框架(如 Tensorflow 和 Pytorch)使用它而不是实际卷积的原因(尽管他们仍然称其为卷积,可能是由于历史原因或在术语上与使用实际卷积的其他框架保持一致)。
推荐阅读
- sapui5 - 应用程序在后端系统上部署时崩溃
- google-drive-api - Google Drive API - 查询拥有的项目
- gradle - 无法从 HTTP URL 应用 gradle 脚本插件
- sql - MS Access 中 IIf 语句的替代方法
- linqpad - 如何使用现有代码添加 Linqpad 扩展
- ios - 当文件在多个选项卡中打开时,Xcode 失去语法高亮显示
- android - 显示运行时权限对话框时出现异常
- javascript - 在索引中显示值
- python - 用字符串作为参数定义函数
- ruby-on-rails - 如何与咖啡脚本通信rails以实时更新页面内容