用numpy分解矩阵的一种优雅方法

时间:2018-11-26 18:47:28

标签: python numpy

我将用一个例子来描述这个问题。有一个矩阵

[[1 2]
 [3 4]]

我需要调整大小/将其拆解到下一个

[[1 1 2 2]
 [1 1 2 2]
 [3 3 4 4]
 [3 3 4 4]]

该操作与卷积网络中的最大池化相反。我有周期的粗暴解决方案。我很高兴看到numpy是否有完善的解决方案。 我的暴力解决方案如下。

matrix = np.arange(1, 5).reshape(2, 2)
matrix_m, matrix_n = matrix.shape
kernel = np.ones((2, 2), dtype=np.int)
kernel_m, kernel_n = kernel.shape
unpooled_matrix = np.zeros((matrix_m * kernel_m, matrix_n * kernel_n), dtype=np.int)
for i in range(matrix_m):
    pos_i = i * kernel_m
    for j in range(matrix_n):
        pos_j = j * kernel_n
        unpooled_matrix[pos_i: pos_i + kernel_m, pos_j: pos_j + kernel_n] = kernel * matrix[i][j]

print(matrix)
print(kernel)
print(unpooled_matrix)

0 个答案:

没有答案