MaxUnpool3d
-
class torch.nn.MaxUnpool3d(kernel_size, stride=None, padding=0)[source][source]
计算 MaxPool3d
的部分逆操作。
MaxPool3d
不是完全可逆的,因为非最大值丢失了。MaxUnpool3d
将 MaxPool3d
的输出(包括最大值的索引)作为输入,计算一个部分逆操作,其中所有非最大值都设置为零。
注意
MaxPool3d
可以将多个输入大小映射到相同的输出大小。因此,逆向过程可能会变得模糊。为了解决这个问题,您可以在前向调用中将所需的输出大小作为附加参数 output_size
提供。请参阅下面的输入部分。
- 参数
kernel_size (int 或 tuple) – 最大池化窗口的大小。
stride (int 或 tuple) – 最大池化窗口的步长。默认设置为 kernel_size
。
padding (int 或 tuple) – 添加到输入的填充。
- 输入
input: 要执行逆操作的输入 Tensor
indices: MaxPool3d 输出的索引
output_size (可选): 目标输出大小
- 形状
输入: (N,C,Din,Hin,Win) 或 (C,Din,Hin,Win)。
输出: (N,C,Dout,Hout,Wout) 或 (C,Dout,Hout,Wout),其中
Dout=(Din−1)×stride[0]−2×padding[0]+kernel_size[0]
Hout=(Hin−1)×stride[1]−2×padding[1]+kernel_size[1]
Wout=(Win−1)×stride[2]−2×padding[2]+kernel_size[2] 或在前向调用中由 output_size
指定
示例
>>> # pool of square window of size=3, stride=2
>>> pool = nn.MaxPool3d(3, stride=2, return_indices=True)
>>> unpool = nn.MaxUnpool3d(3, stride=2)
>>> output, indices = pool(torch.randn(20, 16, 51, 33, 15))
>>> unpooled_output = unpool(output, indices)
>>> unpooled_output.size()
torch.Size([20, 16, 51, 33, 15])