PyTorch torch.nn.AvgPool2d 関数
torch.nn.AvgPool2dPyTorch の2次元平均プーリングモジュールです。
入力の各ウィンドウの平均値を計算し、ダウンサンプリングや特徴集約によく使用されます。
関数定義
torch.nn.AvgPool2d(kernel_size, stride=None, padding=0, ceil_mode=False, count_include_pad=True)
パラメータの説明
kernel_size: プーリングウィンドウサイズstride: ストライド、デフォルトは kernel_sizepadding: パディングサイズceil_mode: 出力サイズの計算に ceil を使用するかどうか
使用例
例 1: 基本的な使い方
実例
import torch
import torch.nn as nn
pool = nn.AvgPool2d(kernel_size=2, stride=2)
x = torch.randn(1, 1, 4, 4)
output = pool(x)
print("入力:n", x.squeeze().tolist())
print("n出力:n", output.squeeze().tolist())
print("形状:", x.shape, "->", output.shape)
import torch.nn as nn
pool = nn.AvgPool2d(kernel_size=2, stride=2)
x = torch.randn(1, 1, 4, 4)
output = pool(x)
print("入力:n", x.squeeze().tolist())
print("n出力:n", output.squeeze().tolist())
print("形状:", x.shape, "->", output.shape)
例 2: グローバル平均プーリング
実例
import torch
import torch.nn as nn
# グローバル平均プーリング
gap = nn.AdaptiveAvgPool2d(1)
x = torch.randn(4, 64, 16, 16)
out = gap(x)
print("入力:", x.shape)
print("出力:", out.shape)
print("各チャネルの平均値の数:", out.numel() // 64)
import torch.nn as nn
# グローバル平均プーリング
gap = nn.AdaptiveAvgPool2d(1)
x = torch.randn(4, 64, 16, 16)
out = gap(x)
print("入力:", x.shape)
print("出力:", out.shape)
print("各チャネルの平均値の数:", out.numel() // 64)
例 3: MaxPool との比較
実例
import torch
import torch.nn as nn
x = torch.tensor([[[
[1, 2, 3, 4],
[5, 6, 7, 8],
[9, 10, 11, 12],
[13, 14, 15, 16]
]]], dtype=torch.float32)
maxpool = nn.MaxPool2d(2, 2)
avgpool = nn.AvgPool2d(2, 2)
print("入力:n", x[0, 0])
print("nMaxPool:n", maxpool(x)[0, 0])
print("nAvgPool:n", avgpool(x)[0, 0])
import torch.nn as nn
x = torch.tensor([[[
[1, 2, 3, 4],
[5, 6, 7, 8],
[9, 10, 11, 12],
[13, 14, 15, 16]
]]], dtype=torch.float32)
maxpool = nn.MaxPool2d(2, 2)
avgpool = nn.AvgPool2d(2, 2)
print("入力:n", x[0, 0])
print("nMaxPool:n", maxpool(x)[0, 0])
print("nAvgPool:n", avgpool(x)[0, 0])
使用シーン
- 特徴集約: 空間次元の削減
- グローバル平均プーリング: 全結合層の代替
- 特徴の平滑化ノイズの低減
その他の拡張
PyTorch torch.nn リファレンスマニュアル