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])