首页 文章

张量流中补丁的点积

提问于
浏览
1

我有两个相同大小的方形矩阵和一个方形补丁的尺寸 . 我想计算每对补丁之间的点积 . 基本上我想实现以下操作:

def patch_dot(A, B, patch_dim):
    res_dim = A.shape[0] - patch_dim + 1
    res = np.zeros([res_dim, res_dim, res_dim, res_dim])
    for i in xrange(res_dim):
        for j in xrange(res_dim):
            for k in xrange(res_dim):
                for l in xrange(res_dim):
                    res[i, j, k, l] = (A[i:i + patch_dim, j:j + patch_dim] *
                                       B[k:k + patch_dim, l:l + patch_dim]).sum()

    return res

显然,这将是一个非常低效的实现 . Tensorflow的tf.nn.conv2d似乎是一个很自然的解决方案,因为我基本上是在进行卷积,但是我的滤波器矩阵并没有固定 . 在Tensorflow中是否有一个自然的解决方案,或者我应该开始考虑实现我自己的tf-op?

1 回答

相关问题