PyTorch关于以下方法使用:detach() cpu() numpy() 以及item() |
您所在的位置:网站首页 › cpu更换方法 › PyTorch关于以下方法使用:detach() cpu() numpy() 以及item() |
注:训练过程常会出现上述方法,本文只是简单介绍他们的含义和作用,深层理解请跳至文档,或者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(): |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |