[ERROR]1.Can‘t call numpy() on Variable that requires grad. Use var.detach().numpy() instead.

ERROR系列:Can’t call numpy() on Variable that requires grad. Use var.detach().numpy() instead.无法在需要grad的Variable上调用numpy()。请改用var.detach()。numpy()。

[pytorch中] 网络输出的Tensor张量一般都是具有梯度的,因此如果我们想要将其转换成numpy中的数组。
第一步:需要将GPU转换成CPU上运行,因为numpy是在CPU上使用的;
第二步:网络输出的有梯度的张量一般包含了三个部分,张量本身的数值、是否具有梯度和所在的设备。上一步我们已经将设备从GPU上转到了CPU上,这样就可以在CPU上使用numpy了,那么第二步就是要取出张量中的数据,这里面取出数据可以使用data和detach()这两种方法取出张量中的数据,(detach()这种是比较好的,具体data和detach()会单独一篇博客分析)。
第三步:在前面两步通过.cpu().data/.cpu().detach()的方法将张量中的数据取出来,并放到CPU上,那么就可以把数值转换成numpy,直接使用方法numpy()就可以。

你可能感兴趣的:(ERROR,python,pytorch,深度学习)