当我们在PyTorch张量上调用cpu()。data.numpy()时会发生什么?

时间:2020-06-08 12:11:13

标签: machine-learning pytorch

我正在一个项目上,需要将损失张量中的数据传递到绘图库。

执行此呼叫时会发生什么-> loss.cpu().data.numpy()

是否有将张量与计算图分离的风险?

1 个答案:

答案 0 :(得分:3)

.cpu()将张量复制到CPU,但是如果张量已经在CPU上,则没有任何变化。

.numpy()从张量创建一个NumPy数组。张量和数组共享底层内存,因此,如果就地修改NumPy数组,则更改将反映在原始张量中。如果计划对NumPy数组进行就地修改,则通常应创建它的副本。在loss在GPU上的情况下,loss.cpu()已经创建了一个副本,因此就地修改只会影响您未使用的中间CPU张量。

是否有将张量与计算图分离的风险?

不,关于计算图,原始张量loss不受此影响。