gpt4 book ai didi

python - 仅使用 numpy 最大池化 2x2 数组

转载 作者:行者123 更新时间:2023-12-01 23:13:53 45 4
gpt4 key购买 nike

我需要有关使用 numpy 进行最大池化的帮助。我正在学习用于数据科学的 Python,在这里我必须为 2x2 矩阵做最大池化和平均池化,输入可以是 8x8 或更多,但我必须为每个矩阵做最大池化2x2 矩阵。我使用

创建了一个矩阵
k = np.random.randint(1,64,64).reshape(8,8)

因此我将得到 8x8 矩阵作为随机输出。形成我想要做 2x2 max pooling 的结果。提前致谢i just want to perform this in numpy coding

lwhat I have done

最佳答案

您不必自己计算必要的步幅,只需注入(inject)两个辅助维度即可创建一个 4 维数组,该数组是 2x2 block 矩阵的二维集合,然后在 block 上取元素方面的最大值:

import numpy as np

# use 2-by-3 size to prevent some subtle indexing errors
arr = np.random.randint(1, 64, 6*4).reshape(6, 4)

m, n = arr.shape
pooled = arr.reshape(m//2, 2, n//2, 2).max((1, 3))

上面的例子:

>>> arr
array([[40, 24, 61, 60],
[ 8, 11, 27, 5],
[17, 41, 7, 41],
[44, 5, 47, 13],
[31, 53, 40, 36],
[31, 23, 39, 26]])

>>> pooled
array([[40, 61],
[44, 47],
[53, 40]])

对于不假设 2×2 block 的完全通用的 block 池:

import numpy as np

# again use coprime dimensions for debugging safety
block_size = (2, 3)
num_blocks = (7, 5)
arr_shape = np.array(block_size) * np.array(num_blocks)
numel = arr_shape.prod()
arr = np.random.randint(1, numel, numel).reshape(arr_shape)

m, n = arr.shape # pretend we only have this
pooled = arr.reshape(m//block_size[0], block_size[0],
n//block_size[1], block_size[1]).max((1, 3))

关于python - 仅使用 numpy 最大池化 2x2 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69324367/

45 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com