我有一个4x4的输入矩阵,我想将每个2x2的切片乘以3x3的权重矩阵中存储的权重。请参见附件中的示例:
在图像中,将4x4输入矩阵的着色部分乘以3x3权重矩阵的相同着色部分,并将其存储在4x4输出矩阵中。当切片重叠时,输出将采用重叠的总和(例如,蓝色+红色)。
我试图在Tensorflow 2.0中使用渴望的张量(可以视为numpy数组)执行此操作。这是我为执行此操作而编写的,它将产生预期的输出。
inputm = np.ones([4,4]) # initialize 4x4 input matrix
weightm = np.ones([3,3]) # initialize 3x3 weight matrix
outputm = np.zeros([4,4]) # initialize blank 4x4 output matrix
# iterate through each weight
for i in range(weightm.shape[0]):
for j in range(weightm.shape[1]):
outputm[i:i+2,j:j+2] += weightm[i,j] * inputm[i:i+2,j:j+2]
但是,由于我要逐一遍历权重矩阵,因此我认为这样做效率不高,当我需要在500x500的大型矩阵上执行此操作时,这将非常慢。我很难确定一种矢量化此操作的方法,也许将权重矩阵平铺为与输入矩阵相同的形状,然后执行一次矩阵乘法。我还考虑过将矩阵展平,但是我仍然找不到能够更有效地做到这一点的方法。
任何建议将不胜感激。预先感谢!