【发布时间】:2020-05-24 08:52:38
【问题描述】:
假设我有一个形状为 [b,c,h,w] 的 PyTorch Cuda 浮点张量 x,采用浮点张量范围允许的任意值。我想在 [0,1] 范围内对其进行归一化。
我想到了以下算法(但任何其他算法也可以)。
步骤 1:在每个批次中找到最小值。称它为min,形状为[b,1,1,1]。
Step2:同样找到最大值并将其命名为max。
第三步:使用y = (x-min)/max。或者使用y = (x-min)/(max-min)。我不知道哪个会更好。 y 的形状应该与x 的形状相同。
我正在使用 PyTorch 1.3.1。
具体来说,我无法使用torch.min() 获得所需的min。 max 也是如此。
我将使用它来将其馈送到预训练的 VGG 以计算感知损失(在上述归一化之后,我还会将它们带到 ImageNet 均值和标准差)。由于某种原因,我无法在数据加载部分执行 [0,1] 范围,因为我所在地区以前的工作有一个非常具体的归一化算法,必须使用,但有时不能确保 [0,1] 范围,但会在它附近的某个地方。这就是为什么在计算感知损失时我必须做这个明确的归一化作为预防措施。我知道所有开箱即用的感知损失实现假设数据在 [0,1] 或 [-1,1] 范围内,因此不要进行此转换。
非常感谢
【问题讨论】:
标签: image-processing computer-vision pytorch