pytorch学习杂记(二)

本文详细解释了深度学习模型训练中add和concat操作的区别,以及在YOLOv7框架中回归预测部分的loss计算过程,包括confidence,regression,objectness和classification的损失函数。

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

在深度学习模型训练中 add 和 concat操作有什么区别?

add:逐元素按值相加
concat:按照指定的维度进行张量堆叠

  • torch.cat在行方向上堆叠:
    在这里插入图片描述
  • torch.cat在列方向上堆叠:
    在这里插入图片描述

ai = torch.arange(na, device=targets.device).float().view(na, 1).repeat(1, nt) 执行逻辑

  • torch.arange: 分配一个张量为左闭右开区间[0, na),默认是int类型, device参数可以将张量加载到指定的设备上
  • float: 将数据类型转换成float型
  • view(na, 1):view方法用于改变张量形状,而不改变数据。view(na, 1)表示由一维张量变为二维张量。第二维的大小为1
  • repeat(1, nt):表示在第二维的方向上重复nt次

targets = torch.cat((targets.repeat(na, 1, 1), ai[:, :, None]), 2) 的执行逻辑

  • targets.repeat(na, 1, 1) :targets 在行的方向上堆叠na次
  • ai[:, :, None]:用来扩展张量ai的维度,张量ai增加第三个维度,并且大小为1
  • torch.cat(…, 2):将两个张量沿着第三个维度拼接

torch.tensor(p[i].shape)[[3, 2, 3, 2]] 执行逻辑

  • p[i].shape:从p中找到索引为i的张量,并返回该张量的shape,用元组表示
  • torch.tensor(p[i].shape):将元组类型的元素转换成tensor类型
  • [[3,2,3,2]]:这是索引列表,返回索引指向的元素值

torch.max(r, 1. / r).max(2)[0] 执行逻辑

  • torch.max(r, 1. / r):

t = t[j] t的维度是[3, 42, 7] 的float张量 j是[3 , 42]的bool型张量,这是怎么过滤的?

j = torch.stack((torch.ones_like(j), j, k, l, m) 执行逻辑

  • torch.ones_like(j):创建一个与张量j形状相同的新张量,其中所有元素都是1。
  • (torch.ones_like(j), j, k, l, m):这是一个包含五个张量的元组。这些张量将被堆叠在一起。为了成功堆叠,所有张量的形状必须相同,除了堆叠的维度。

torch.cat([pxy, pwh], dim=-1)

-1表示最后一个维度

pair_wise_iou.shape[1]

获取张量pair_wise_iou 第二个维度的大小

F.one_hot(this_target[:, 1].to(torch.int64), self.nc)

将this_target[:, 1]上所有的元素值,用one-hot向量的形式表示,向量的维度为self.nc

unsqueeze(1)

第二个维度(索引为1)处添加一个大小为1的新维度。这通常用于增加张量的维度数。

先贴一段yolov7中回归预测值的代码

    def __call__(self, p, targets, imgs):  # predictions, targets, model   
        device = targets.device
        lcls, lbox, lobj = torch.zeros(1, device=device), torch.zeros(1, device=device), torch.zeros(1, device=device)
        bs, as_, gjs, gis, targets, anchors = self.build_targets(p
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值