让我们假装在有图像的情况下,我在图像的X轴上也有从左到右的渐变,在Y轴上从上到下有另一个渐变。这两个渐变具有相同的图像大小,并且可以在-0.5到0.5的范围内。
现在,我想使卷积内核(a.k.a.卷积滤波器或卷积权重)取决于渐变中的(x, y)
位置。因此内核是梯度的函数,就好像内核是嵌套的迷你神经网络的输出一样。这将使滤波器的权重在每个位置都不同,但与它们的邻居略微相似。我如何在PyTorch或TensorFlow中做到这一点?
当然,我自己可以计算Toeplitz matrix (a.k.a. diagonal-constant matrix) ,但如果假装O(n^3)
,矩阵乘法会进行x==y==n
次操作,而卷积可以在O(n^2) normally
中实现。或者我可以自己迭代每个元素并以非传播方式进行乘法运算。
有更好的想法吗?我希望在这里看到创造力,思考如何巧妙地实施这一点。我相信编码是一种有趣的方式来构建一个能够做类似于Spatial Transformer Networks的简化版本的网络层,但是它的空间变换将独立于图像。
答案 0 :(得分:1)
这是我想到的这个问题的简化版本的解决方案,其中将使用权重的线性组合而不是真正使用嵌套的迷你神经网络:
有可能进行4次不同的卷积通过,以便有4个特征图,然后将这4个地图与梯度(2个垂直和2个水平梯度)相乘,并将它们加在一起,这样只剩下1个地图。然而,这将是不同地图的线性组合,这比真正使用嵌套神经网络更简单,嵌套神经网络首先会改变内核。
答案 1 :(得分:0)
更多地考虑它,这是一个同等问题的解决方案。这个解决方案就是通过放置"迷你神经网络来解决问题。之后而不是之前,以一种完全不同的方式。所以它解决了这个问题,但提供了一个截然不同的优化空间和收敛行为,这对我来说比我如何制定问题更不自然。
从某种意义上说,问题的解决方案可能非常类似于简单地将两个渐变连接到1个常规特征图(来自常规卷积),例如在连接后具有d_2 = d_1 + 2
的深度,以及然后在此基础上进行更多的卷积。我不知道为什么这是一个同等问题的有效解决方案,但我想通过这个,它似乎是可证明的。
优化空间(对于权重)在这里会非常不同,我认为它不会与相同的行为收敛。我想知道你们在优化融合方面对这个解决方案的看法。
答案 2 :(得分:0)
卷积比全连接层更有效的原因是因为它们是平移不变的。如果您希望具有取决于位置的卷积,则需要向卷积添加两个额外参数,即具有 N+2 个输入通道,其中 x, y 坐标是两个附加通道的值(例如 {{3} }).
至于替代解决方案,梯度是否有意义?如果不是,并且它在所有图像中都是统一的,最好在预处理阶段手动删除它(类似于方向校正、裁剪等)。如果不是(例如光照、阴影的差异),那么在假设它们会学习不同光照的不变性的情况下包括其他层是一种常见的不干涉方法。