pytroch取张量数据

print('1111',loss)
print('2222',loss.data)
print('3333',loss.cpu())
print('4444',loss.cpu().data)

print('7777',loss.cpu().detach().numpy())
print('8888',loss.cpu().data.numpy())
print('9999',loss.cpu().item())
print('aaaa',loss.item())

代码:

pytroch取张量数据
pytroch取张量数据

loss.data:读取Variable中的tensor,一般是在GPU上面的,如果用了cuda

loss.cpu():cpu是把数据转移到cpu上,注意numpy只能放在CPU上面

loss.data.cpu():取出tensor放到cpu上面

loss.data.cpu().numpy():取出tensor放到cpu上面,并且把tensor转化为numpy

loss.item():取出单元素张量的元素值并返回该值, 保持原元素类型不变。,即:原张量元素为整形,则返回整型,原张量元素为浮点型则返回浮点型,etc.

loss.detch():返回一个新的tensor,从当前计算图中分离下来的,但是仍指向原变量的存放位置,不同之处只是requires_grad为false, 得到的这个tensor永远不需要计算其梯度,不具有grad。说白了就是从计算图剥离这个变量。

即使之后重新将它的requires_grad置为true,它也不会具有梯度grad
这样我们就会继续使用这个新的tensor进行计算,后面当我们进行反向传播时,到该调用detach()的tensor就会停止,不能再继续向前进行传播

一般取出值在tensorboard里面绘制,我会选择loss.item(),我觉得安全一点,如果有不对请指正!

Original: https://blog.csdn.net/yangqiang1997/article/details/123529144
Author: 爱学习的阿强
Title: pytroch取张量数据

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/761732/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球