torch.nn.functional.
unfold
(input, kernel_size, dilation=1, padding=0, stride=1)
从批量的输入张量中(batch_size,channel,H,W)提取滑动局部块(kernel_size的正方形)。
Warning:Currently, only 4-D input tensors (batched image-like tensors) are supported.进行unfold操作时最好clone一个新的张量并在其上进行操作
假设有 input
tensor of shape (N, C, *),其中N是batch dimension, C是channel dimension, ∗ 代表任意spatial dimensions.
unfold操作在input的spatial dimension种滑动一个大小为kernel size的window,并将一个window内的值展平,变为一个三维向量的一列。三维向量的大小为
显然L代表了一共产生的window总数,第二个维度代表一个window内的数的个数。这么一列可用tensor.view(C,kernel_size,kernel_size)还原。
dilation可以理解为如下图:
上图,kernel_size=3,dilation=2
L的计算公式为