给定一个卷积操作后的特征图和一个池化窗口的大小,要求实现最大池化操作。最大池化是深度学习中常用的图像处理方法,它通过在特征图上应用池化窗口并取每个窗口中的最大值,减少了数据的尺寸和计算量,同时保留了图像的主要特征。
最大池化操作的过程是:在卷积后的特征图中,选取一个固定大小的窗口,以固定步长滑动该窗口,并在每个窗口内选取最大的值作为输出。
池化操作的主要步骤是:
def max_pooling(img, pool_size):
    # 获取特征图的高和宽
    h, w = len(img), len(img[0])
    # 获取池化窗口的高和宽
    p_h, p_w = pool_size
    result = []
    
    # 遍历每个池化窗口的位置,步长为窗口大小
    for i in range(0, h - p_h + 1, p_h):
        row = []
        for j in range(0, w - p_w + 1, p_w):
            # 获取当前窗口内的所有值
            pool = [img[x][y] for x in range(i, i + p_h) for y in range(j, j + p_w)]
            # 取当前窗口内的最大值
            row.append(max(pool))
        result.append(row)
    
    return result
# 输入
img = eval(input())  # 读取二维列表,特征图
pool_size = eval(input())  # 读取池化窗口大小
# 输出
output = max_pooling(img, pool_size)  # 执行最大池化操作
print(output)  # 打印池化后的特征图
        某医疗诊断公司在进行医疗图像识别的过程中,使用了基于卷积神经网络(CNN)的机器学习模型。其中,卷积层后的最大池化操作是关键步骤之一,它有助于减少模型的计算负担并提取特征的最重要部分。请根据输入描述和输出描述中的要求,
编程实现与CNN中最大池化操作相关的子功能。
最大池化:最大池化是一种子采样方法,它在卷积操作后进行,用于减少模型的计算负担并提取特征的最重要部分。最大池化操作的步骤是:在卷积后的特征图中,选取一个固定大小的窗口,以固定的步长滑动窗口,并在每个窗口中选取最大的值作为该窗口的输出。
输入第一行是一个2维的list,用于表示卷积后的特征图,形如[[1,2,1,2],[3,4,3,4],[1,2,1,2],[3,4,3,4]],且所有的list组成的都是方阵。第二行输入是一个1维的list参数,长度固定为2,形如[2,2],这两个元素分别表示池化窗口的宽度和高度。
返回值为一个2维的list,表示经过最大池化操作后的特征图
输入
[[1, 2, 1, 2], [3, 4, 3, 4], [1, 2, 1, 2], [3, 4, 3, 4]]
[2,2]
输出
[[4,4],[4, 4]]
输入
[[1, 3, 2, 4], [5, 7, 6, 8], [1, 3, 2, 4], [5, 7, 6, 8]]
[3,3]
输出
[[7]]