问题描述:
RuntimeError: Can't call numpy() on Tensor that requires grad. Use tensor.detach().numpy() instead.
原因分析:
待转换类型的PyTorch Tensor变量带有梯度,直接将其转换为numpy数据将破坏计算图,因此numpy拒绝进行数据转换,实际上这是对开发者的一种提醒。如果自己在转换数据时不需要保留梯度信息,可以在变量转换之前添加detach()调用。
解决方案:
y.numpy() ---> y.detach().numpy()
若是数据部署在GPU上时,则修改为
y.cpu().numpy() ---> y.cpu().detach().numpy()