例如,我将一组图像输入CNN。这些图像的默认权重是1.如何重新加权其中一些图像以使它们具有不同的权重?可以' DataLoader'在pytorch实现这个目标?
我学到了另外两种可能性:
还有其他办法吗,我们能做到吗?任何建议都将不胜感激。
答案 0 :(得分:0)
我可以想到两种方法来实现这一目标。
当您反向传播渐变时,明确传递重量。
在计算损失后,当您即将反向传播时,您可以将Tensor
传递给backward()
,并且所有后续渐变将由相应元素缩放,即执行某些操作像
loss = torch.pow(out-target,2)
loss.backward(my_weights) # is a Tensor of same dimension as loss
但是,如果您使用想要批量分配单个权重,则无法使用nn.module
中的自定义损失函数来汇总批次中所有样本的损失。
使用torch.utils.data.sampler.WeightedRandomSampler
如果你使用PyTorch的{{1}},这比乘以你的训练集更简单。然而,由于它是随机的,它并没有指定精确的权重。但是,如果您在训练集上迭代了足够多次,那么它可能足够接近。