我将用一个例子来描述这个问题。有一个矩阵
[[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)