私は同じサイズの2つの正方行列と正方形のパッチの寸法を持っています。私はパッチの各ペアの間にドット積を計算したいと思います。基本的には、次の操作を実装したいと考えています。テンソルフローのパッチのドット積
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の実装を見始めるべきですか?