PyTorch关于以下方法使用:detach() cpu() numpy() 以及item()

您所在的位置:网站首页 cpu更换方法 PyTorch关于以下方法使用:detach() cpu() numpy() 以及item()

PyTorch关于以下方法使用:detach() cpu() numpy() 以及item()

2023-08-31 06:17| 来源: 网络整理| 查看: 265

注:训练过程常会出现上述方法,本文只是简单介绍他们的含义和作用,深层理解请跳至文档,或者GIthub查看源码,又或者网盘 ,提取码:pjrs,把下载好的PyTorch文档导入,则可以离线查看文档了,希望能帮到你。步入正文:

PyTorch深度学习框架在训练时,大多都是利用GPU来提高训练速度,怎么用GPU(方法:.cuda()):

import DataSet from model.MyNet import MyNet from torch.utils.data import DataLoader train_dataset = DataSet() # 自己定义的数据类 train_loader = DataLoader(train_dataset,...) # 用 DataLoader封装数据 model = MyNet() # 自己定义的网络类 model.cuda() ########################## 关键处start ############################## for idx,(img,label) in enumerate(train_loader): img = img.cuda() # .cuda()将数据和模型送入GPU中 label = label.cuda() output = model(img) show(output) # 对output进行操作,如显示output ########################## 关键处end ###############################

我们可以发现,当我们需要对output进行进一步运算时,该运算会被记录在计算图中,从而计算梯度,为反向传播做准备。但事实上,我们只是想要显示他,不需要output进行反传,此时,detach()方法出现了。

作用:阻断反向传播的。返回值:Tensor,且经过detach()方法后,变量仍然在GPU上。 output= output.detach() # 阻断反传

问题来了:此时output仍然在显存中,而内存操作可能会找不到该变量,也就是说,show(output)是没办法进行操作的。那么cpu()出现了。

作用:将数据移至CPU中返回值:Tensor output = output.detach().cpu() # 移至cpu 返回值是cpu上的Tensor

后续,则可以对该Tensor数据进行一系列操作,其中包括numpy(),该方法主要用于将cpu上的tensor转为numpy数据。

作用:tensor变量转numpy返回值:numpy.array() output = output.detach().cpu().numpy() # 返回值为numpy.array()

关于 item(): 在这里插入图片描述 可以发现,item()可以获取torch.Tensor的值。返回值为float类型,如上图所示。至此,已完成简单介绍。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3