先上代码
import torch
import numpy as np
unfold = torch.nn.Unfold(kernel_size=(2, 3))
input = torch.Tensor(np.array(range(120)).reshape(2, 5, 3, 4))
output = unfold(input)
# each patch contains 30 values (2x3=6 vectors, each of 5 channels)
# 4 blocks (2x3 kernels) in total in the 3x4 input
output.size()
# torch.Size([2, 30, 4])
pritn ('sa')
从图上可以看出,unflow每次去找输入input中以核大小范围的内容,并把查找的内容拉平,也就是列排放,每一个通道维度都进行相同的操作,然后这个核滑动几次,那么输出的最后一维就是多少。