当我将输入变量从CPU改为cuda时,它失去了所有的梯度,也失去了它的is_leaf状态。我怎么才能避开这一切?我想要保持渐变,并将其更改为另一个设备。
发布于 2020-08-31 18:08:10
叶张量是将其requires_grad属性设置为True的张量。当你对张量做任何不恰当的操作时,由此产生的张量不再是叶张量。这包括使用.to(device)、.cuda()或.cpu()在不同设备上创建张量副本。设置现有张量的requires_grad属性的推荐方法是使用就地Tensor.requires_grad_方法。如果希望GPU上的张量成为叶节点,则需要在requires_grad 复制到所需设备后设置。
例如
input = input.to('cuda')
input.requires_grad_(True) # need to set requires_grad after copying to GPU或者更简洁一点
input = input.to('cuda').requires_grad_(True)https://stackoverflow.com/questions/63662624
复制相似问题