Deep learning pytorch就地操作错误。如何避开它?

Deep learning pytorch就地操作错误。如何避开它?,deep-learning,visualization,convolution,torch,pytorch,Deep Learning,Visualization,Convolution,Torch,Pytorch,在python中使用PyTorch,我通过使用我正在训练的反向网络将CNN的一个层反馈到输入空间 然而,我只对一个通道的表示感兴趣。我通过将所有值设置为0来实现这一点,除了我感兴趣的通道的值 图像_表示为[torch.FloatTensor,尺寸为1x64x56x56] image_representation[0, 1:, :, :] = 0 将图像_表示插入到逆网络中会生成图像。我把这个图像输入到原始的CNN结果中,再输入到另一个表示中,我可以与原始图像的表示进行比较。这个比较使我的损失函

在python中使用PyTorch,我通过使用我正在训练的反向网络将CNN的一个层反馈到输入空间

然而,我只对一个通道的表示感兴趣。我通过将所有值设置为0来实现这一点,除了我感兴趣的通道的值

图像_表示为[torch.FloatTensor,尺寸为1x64x56x56]

image_representation[0, 1:, :, :] = 0
将图像_表示插入到逆网络中会生成图像。我把这个图像输入到原始的CNN结果中,再输入到另一个表示中,我可以与原始图像的表示进行比较。这个比较使我的损失函数

然而,当我运行它时,我得到了错误

RuntimeError: one of the variables needed for gradient computation has been modified by an inplace operation

我知道梯度不能完全计算,因为有零,但是我如何设计我的代码,使它能够忽略这个错误,并且只对64个通道中的一个进行计算?

为什么不使用新的变量?i、 e.一个通道=变量(torch.zeros(1,64,56,56))一个通道[0,1:,:,:]=图像表示[0,1:,:,:,:],然后将其输入到您的反向网络,并将结果输入原始CNN?@Sumaku您的解决方案对我有效。输出[0,1,:,:]=0