我有一个大小为 NxDxWxH 的小批量,其中 N 是小批量的大小,D 是尺寸,W 和 H 分别是宽度和高度。假设我有一组滤波器 F,每个滤波器的尺寸为 Dx1x1。我需要计算小批量和过滤器之间的成对距离。输出的大小应为 NxFxWxH。
input: NxDxWxH
filters: FxDx1x1
output: NxFxWxH
假设 a 是在输入位置 (x,y) 提取的大小为 D 的向量,f 是大小为 Dx1x1 的滤波器。输出中的每个值应为
\sum_{d=1}^D (x_d - f_c)^2
。
换句话说,我试图找到成对的 L2 距离,而不是卷积。
我怎样才能在 pytorch 中做到这一点?
您可以通过扩展输入和过滤器以进行正确的自动形状铸造来实现此目的。
# Assuming that input.size() is (N, D, W, H) and filters.size() is (F, D, 1, 1)
input.unsqueeze_(1)
filters.unsqueeze_(0)
output = torch.sum((input - filters)**2, dim=2)