pytorch

本文介绍如何使用PyTorch查看网络结构,并提供Tensor与Numpy间转换的方法。同时,文章还列举了一些常见的PyTorch错误及其解决方案,包括输入类型与权重类型的匹配问题、显存溢出等问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.Pytorch查看网络结构

from torchsummary import summary
 
device = torch.device("cuda" if torch.cuda.is_available() else "cpu") 
model = models.resnet18().to(device) 
summary(model, (3,256,256))

注意:以上三种方法在处理输出为tuple时(如:LSTM),会有BUG

pytorch 踩坑之'tuple' object has no attribute 'size'

解决方法:

安装最新的版本:pip install torch-summary

 

2. Tensor 与 Numpy 之间的相互转换


#from_numpy()与numpy() 是共享内存的,转换速度较快
a.numpy(b)
c = torch.from_numpy()

#不共享内存
e = torch.tensor(d)

#把tensor和numpy的数转化为int,float等类型
a[1].item()

 

 

1. Input type (torch.cuda.FloatTensor) and weight type (torch.FloatTensor) should be the same

错误内容大概就是指输入类型是CPU(torch.FloatTensor),而参数类型是GPU(torch.cuda.FloatTensor)

 

错误记录:

1. cuda out of memeory

1)torch.atan(w/h),当h>>w时,w/h->0, 出现无限大的数(inf),导致显存溢出
解决办法:
torch.atan(w/h) => torch.atan(torch.exp(w)/torch.exp(h))
2)当w过大时,torch.exp(w) 也可能为 inf,导致显存溢出
解决办法:
对输入的像素坐标,进行torch.sigmod()
3) 当两个变量的形状不一样时,引发显存溢出
IoU.shape = (110484,1)    #
v.shape = (110484)        #

最终版本:
 v = (4 / (math.pi ** 2)) * torch.pow((torch.atan(w_gt / h_gt) - torch.unsqueeze(torch.atan(w_pre / h_pre),1)), 2)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值