machine-learning - PyTorch 或 TensorFlow 中可以使用位置相关的卷积滤波器吗?

标签 machine-learning neural-network pytorch conv-neural-network convolution

假设除了图像之外,我还在图像的 X 轴上有一个从左到右的渐变,以及在 Y 轴上从上到下的另一个渐变。这两个渐变与图像大小相同,范围都在 -0.5 到 0.5 之间。

现在,我想让卷积核(又名卷积滤波器或卷积权重)取决于梯度中的 (x, y) 位置。因此,内核是梯度的函数,就好像内核是嵌套迷你神经网络的输出一样。这将使过滤器的权重在每个位置都不同,但与其邻居稍微相似。如何在 PyTorch 或 TensorFlow 中执行此操作?

当然,我可以计算 Toeplitz matrix (a.k.a. diagonal-constant matrix) 我自己,但如果假装x==y==n,矩阵乘法将需要O(n^3)次运算,而卷积可以在O中实现(n^2) 通常。或者我可以自己迭代每个元素并以非矢量化的方式进行乘法。

还有更好的想法吗?我希望在这里看到创造力,思考如何巧妙地实现这一点。我相信编码将是构建网络层的一种有趣的方式,该网络层能够执行类似于 Spatial Transformer Networks 的简化版本的操作。 ,但其空间变换将独立于图像。

最佳答案

这是我针对此问题的简化版本想到的解决方案,其中将使用权重的线性组合,而不是真正使用嵌套的迷你神经网络:

可以进行 4 次不同的卷积传递,以获得 4 个特征图,然后将这 4 个图与梯度(2 个垂直梯度和 2 个水平梯度)相乘,并将它们加在一起,以便只剩下 1 个图。然而,这将是不同映射的线性组合,这比真正使用嵌套神经网络更简单,而嵌套神经网络首先会改变内核。

关于machine-learning - PyTorch 或 TensorFlow 中可以使用位置相关的卷积滤波器吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48331966/

相关文章:

apache-spark - 调用 LogisticRegressionModelWithLBFGS.train 时出现 Py4JavaError

machine-learning - 如何制作非静态的Caffe网络架构?

python - '值错误: Image with id {} already added' When Run Evaluation on OpenImage Dataset

pytorch - 为什么我们需要将梯度参数传递给 PyTorch 中的向后函数?

deep-learning - PyTorch 在第一个可用的 GPU 上分配更多内存(cuda :0)

pytorch - 在 ImageNet 中使用类的子集

machine-learning - 可以在不平衡数据上建立模型吗?

machine-learning - 使用一个 "majority topic"和多个 "minority topics"对语料库进行主题建模

machine-learning - 识别与 mahout 聚类相关的文档

python - DataSet 归一化输入值的范围