在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