【发布时间】:2019-03-07 23:03:36
【问题描述】:
我想实现一个卷积层,为每个输出位置使用不同的卷积滤波器。具体来说,考虑输出为 16*16*128 (W * H * C) 的情况。我们有 16*16 过滤器,而不是 3*3*128 过滤器;每个尺寸为 3*3*128。这将导致大量参数,但可能的情况是每个 3*3*128 过滤器可能是相同的,只是按不同的常数缩放,并且可以通过侧网络学习这些常数。这样参数的数量就不会太多了。
Dynamic Filter Networks 中简要介绍了类似的想法,但我找不到特定位置过滤器的实现。我的问题是,如果我们想要一个特定于位置的卷积过滤器,我该如何在 Tensorflow 或 Pytorch 中实现它?我需要编写自己的操作还是有一些聪明的方法来使用提供的功能?如果我必须编写一个 OP,有什么技巧可以轻松实现这个想法吗?任何帮助表示赞赏!
【问题讨论】:
-
"每个 3*3*128 过滤器可能是相同的,除了按不同的常数缩放"相当于使用普通卷积(3*3*128 过滤器在每个位置都相同) 然后按学习因子缩放每个位置的输出
-
@myrtlecat 是的,我明白了,但这只是一个简单的案例动机。举一个更有趣的例子,仍然是一个 3*3*128 的过滤器,但是在每个位置,这个过滤器是按元素乘以跨通道的特定于位置的 3*3 矩阵。这不会使参数增加太多。
标签: python tensorflow deep-learning conv-neural-network pytorch