欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

24/10/12 算法说明 汇聚层

最编程 2024-10-12 20:55:32
...

汇聚(pooling)层等于池化层,它具有双重目的:降低卷积层对位置的敏感性,同时降低对空间降采样表示的敏感性。

空间降采样通常指的是在图像或信号处理中,通过减少数据的空间维度来降低数据量,同时尽可能保留重要的信息。

在卷积神经网络(CNN)中,卷积层对空间降采样具有一定的敏感性,这意味着卷积层对输入数据的空间位置变化比较敏感。例如,如果输入图像中的一个特征(如边缘或纹理)发生轻微的平移,卷积层可能会检测到不同的输出。这种敏感性在某些情况下是有益的,因为它允许网络捕捉到精确的特征位置,但在其他情况下,我们可能希望网络对输入的微小变化更加鲁棒。

为了降低这种敏感性并提高网络对输入变化的鲁棒性,通常会在卷积层之后引入池化层(Pooling Layer)。

def pool2d(X, pool_size, mode='max'):
    p_h, p_w = pool_size
    Y = torch.zeros((X.shape[0] - p_h + 1, X.shape[1] - p_w + 1))
    for i in range(Y.shape[0]):
        for j in range(Y.shape[1]):
            if mode == 'max':
                Y[i, j] = X[i: i + p_h, j: j + p_w].max()
            elif mode == 'avg':
                Y[i, j] = X[i: i + p_h, j: j + p_w].mean()
    return Y

多通道

在处理多通道输入数据时,汇聚层在每个输入通道上单独运算,而不是像卷积层一样在通道上对输入进行汇总。 这意味着汇聚层的输出通道数与输入通道数相同。

所以要连接张量构建通道。

X = torch.cat((X, X + 1), 1)