PyTorch自编码器训练 AssertionError: nn criterions don't compute the gradient w.r.t. targets

在pretrained model的基础上添加自编码器进行信息提炼。在Pytorch, 对MSE loss进行梯度回传时,报错信息为

AssertionError: nn criterions don't compute the gradient w.r.t. targets - please mark these variables as volatile or not requiring gradients

这类问题会有一系列原因,比如detach(),但本质很可能是api调用错误。网上有类似的例子(也是自编码器遇到的),问题原因基本上都是loss(output, target)的参数输入顺序颠倒。由于涉及到梯度回传,因此output和target的性质并不等价,因此需要严格满足顺序。

自编码器的解码器输出是output,编码器的输入是target,注意逻辑。

建议参考:https://discuss.pytorch.org/t/nn-criterions-dont-compute-the-gradient-w-r-t-targets/3693/4

你可能感兴趣的:(科研记录)