#B,C,D,H,W->B,C,1,H,W
self.adaptive_pool = nn.AdaptiveAvgPool3d((1, None, None))
nn.AdaptiveAvgPool3d的Pytorch官方文档:
https://pytorch.org/docs/stable/generated/torch.nn.AdaptiveAvgPool3d.html
import torch
import torch.nn as nn
# target output size of 5x7x9
m = nn.AdaptiveAvgPool3d((5, 7, 9))
input = torch.randn(1, 64, 8, 9, 10)
print("1:")
print(input.shape)
output = m(input)
print(output.shape)
# target output size of 7x7x7 (cube)
m = nn.AdaptiveAvgPool3d(7)
input = torch.randn(1, 64, 10, 9, 8)
print("2:")
print(input.shape)
output = m(input)
print(output.shape)
# target output size of 7x9x8
m = nn.AdaptiveAvgPool3d((7, None, None))
input = torch.randn(1, 64, 10, 9, 8)
print("3:")
print(input.shape)
output = m(input)
print(output.shape)
运行结果: