下面是关于PyTorch平均池化nn.AvgPool2d()
的完整攻略。
平均池化(Average Pooling)是一种池化(Pooling)操作,其主要作用是对于输入的二维张量进行降采样,同时保留输入张量的主要特征。平均池化操作会将张量中一个固定大小的区域内的值计算平均值并输出。相比于最大池化(Max Pooling),平均池化的主要特点在于其更加稳定,对于输入的异常值不敏感,同时不容易导致网络的过拟合。
PyTorch是一款广泛使用的深度学习框架之一,在PyTorch中可以通过nn.AvgPool2d()
函数实现二维平均池化操作。下面是具体的使用方法和示例说明。
nn.AvgPool2d()
是PyTorch中二维平均池化的实现函数,其定义如下:
class torch.nn.AvgPool2d(kernel_size, stride=None, padding=0, ceil_mode=False, count_include_pad=True, divisor_override=None)
其中,各个参数的含义如下:
下面通过两个实例,介绍nn.AvgPool2d()
函数的具体使用方法。
import torch
import torch.nn as nn
input = torch.randn(1, 1, 4, 4)
pool = nn.AvgPool2d(2, stride=2)
output = pool(input)
print("input: ", input)
print("output: ", output)
运行结果为:
input: tensor([[[[ 0.1218, 1.1140, 1.6073, 0.5049],
[-0.3338, 1.8880, 0.5913, -1.3907],
[ 0.4478, -0.2553, 0.5243, -2.6133],
[-0.2193, 0.4084, 1.0033, -0.1127]]]])
output: tensor([[[[ 1.2292, 0.6911],
[ 0.1910, 0.3547]]]])
其中input
是输入的4x4大小的张量,nn.AvgPool2d(2, stride=2)
表示将输入张量进行2x2大小的平均池化,步长为2,对输入张量进行降采样,输出一个2x2大小的张量。因此,输入张量被划分为四个2x2的方块,分别计算平均数输出。
import torch
import torch.nn as nn
input = torch.randn(1, 1, 3, 3)
pool = nn.AvgPool2d(2, stride=1, padding=1)
output = pool(input)
print("input: ", input)
print("output: ", output)
运行结果为:
input: tensor([[[[-0.9277, -1.1324, 0.1860],
[-0.3994, 0.8302, -1.0331],
[ 0.5452, -0.4061, -0.6132]]]])
output: tensor([[[[-0.8077, -0.3234, -0.0746, 0.0553],
[-0.5144, -0.2985, 0.1541, -0.3796],
[ 0.0310, -0.2705, -0.4593, -0.6307],
[-0.1349, -0.4067, -0.7688, -0.4655]]]])
其中input
是输入的3x3大小的张量,nn.AvgPool2d(2, stride=1, padding=1)
表示将输入张量进行2x2大小的平均池化,步长为1,对输入张量进行降采样。由于池化窗口大小为2,步长为1,且在边缘补零一个像素(padding=1),因此对于输入张量中的每一个像素点,最多有4个窗口覆盖它。最终对每个窗口覆盖的像素点计算平均值输出,大小为4x4的输出张量。
本文链接:http://task.lmcjl.com/news/3440.html