如何在Theano中的矩阵上逐元素地执行模板计算?

时间:2016-07-01 11:39:41

标签: python image numpy kernel theano

我需要将以下模糊内核应用于RGB图像中的每个像素

[ 0.0625 0.025 0.375 0.025 0.0625 ]  

因此,伪代码在Numpy

中看起来像这样
for i in range(rows):
    for j in range(cols):
        for k in range(3):
            final[i][j][k] = image[i-2][j][k]*0.0625 + \
                             image[i-1][j][k]*0.25 + \
                             image[i][j][k]*0.375 + \
                             image[i+1][j][k]*0.25 + \
                             image[i+2][j][k]*0.0625

我尝试过搜索类似这样的问题,但从未在计算中找到过这类数据访问。
如何为Theano张量矩阵执行上述功能?

1 个答案:

答案 0 :(得分:0)

您可以使用Adults功能执行此任务。请参阅参考here,也可以阅读示例教程here。此解决方案的注意事项:

  • 由于您的内核是对称的,因此您可以忽略Conv2D参数
  • Conv2D使用4D输入和内核形状作为参数,因此您需要先重塑它
  • Conv2D对每个通道求和(我认为在你的情况下'k'变量是针对RGB的吗?它被称为通道)所以你应该先将它分开

这是我的示例代码,我在这里使用更简单的内核:

filter_flip

如果您有任何关于代码的讨论,请发表评论。希望它有所帮助。