PyTorch的”Fold”和”Unfold”是如何工作的?

我已经查看了官方文档,但我很难理解这个函数的用途和工作原理。能有人用通俗的语言解释一下吗?


回答:

unfoldfold 被用来实现“滑动窗口”操作(如卷积)。假设你想对一个特征图/图像中的每个5×5窗口应用一个函数foo

from torch.nn import functional as f
windows = f.unfold(x, kernel_size=5)

现在windowssize是batch-(5*5*x.size(1))-num_windows,你可以对windows应用foo

processed = foo(windows)

然后你需要将processed“折叠”回x的原始大小:

out = f.fold(processed, x.shape[-2:], kernel_size=5)

你需要注意paddingkernel_size,因为它们可能会影响你将processed“折叠”回x大小的能力。此外,fold会对重叠元素进行求和,所以你可能需要将fold的输出除以补丁大小。


请注意,torch.unfold执行的操作与nn.Unfold不同。详情请见这个讨论

Related Posts

Flatten and back keras

我正在尝试使用自编码器获取简单向量中的值 这是我的代码…

如何按索引访问PyTorch模型参数

如果我的网络有10层,包括偏置项,如何仅通过索引访问第…

Python中多元逻辑回归显示错误

我试图使用逻辑回归进行预测,并使用Python和skl…

在MACOS上安装NLTK

我在我的2015款Mac Pro上尝试安装NLTK,操…

如何在R中将通过RFE选择的变量插入到机器学习模型中?

我想使用递归特征消除方法来选择最重要的特征,然后将这些…

CountVectorizer 错误:ValueError: setting an array element with a sequence

我有一个包含144条学生反馈的数据集,其中有72条正面…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注