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的计算公式为
本文详细介绍了PyTorch中nn.functional.unfold函数的工作原理,该函数用于从批量输入张量中提取滑动局部块,特别适用于图像数据。文章解释了如何通过设置kernel_size、dilation、padding和stride参数来控制窗口大小和移动方式,以及如何计算窗口总数L。
894

被折叠的 条评论
为什么被折叠?



