栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

回顾点Pytorch基础知识

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

回顾点Pytorch基础知识

torch.Tensor有两部分数据:gradient和data
当numpy和Tensor互转时,numpy->Tensor没啥问题,Tensor->numpy时有两种方法:
第一种: T1.data.numpy或者T1.detach().numpy。即只转data数据,否则会报错:RuntimeError: Can’t call numpy() on Tensor that requires grad. Use tensor.detach().numpy() instead.
第二种:在模型inference的代码,整体用with torch.no_grad()括住,这样会更省显存,因为模型在前向过程中不再保存gradient的数据

为什么有时候可以T1.numpy()直接转,上代码:

t1=torch.Tensor([1,2,3])
t1=t1.requires_grad_()
t2=torch.Tensor([1,2,3])
t2=t2.numpy()
t1=t1.numpy() #报错RuntimeError: Can't call numpy() on Tensor that requires grad. Use tensor.detach().numpy() instead.

所以本质看这个Tensor存没存gradient,从网络中出来的输出,默认存gradient因为之后很可能做BP。但是inference过程中应该with torch.no_grad()去掉gradient保存,来节约资源

暑期编程PK赛 得CSDN机械键盘等精美礼品!
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1016114.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号