pytorch nn.BCELoss()详解

官方链接看这里

由于中文版的挂了,这里先放英文版的
这里讲的是默认对一个batch里面的数据做二元交叉熵并且求平均。
在这里插入图片描述

参数说明

  1. weight: 给每个batch元素的权重,一般没用
  2. size_average: 默认为True
  3. reduce: True/False 默认为True,对每个minibatch做
  4. reduction: 用的比较多的是这个,若用了2.3可能导致4失效。

在这里插入图片描述

shape描述

input与target都是一样的size
在这里插入图片描述

官方实例

>>> m = nn.Sigmoid()
>>> loss = nn.BCELoss()
>>> input = torch.randn(3, requires_grad=True)
>>> target = torch.empty(3).random_(2)
>>> output = loss(m(input), target)
>>> output.backward()

运行结果

import torch.nn as nn
m = nn.Sigmoid()
loss = nn.BCELoss()
input = torch.randn(3, requires_grad=True)
input
Out[21]: tensor([-0.6212, -0.9684,  0.6923], requires_grad=True)
target = torch.empty(3)
target
Out[23]: tensor([-1.5901e-30,  4.5907e-41,  0.0000e+00])
target = target.random_(2)
target
Out[25]: tensor([1., 0., 1.])
output = loss(m(input), target)
output
Out[27]: tensor(0.5929, grad_fn=<BinaryCrossEntropyBackward>)
### YOLO Layer 类初始化方法及其参数详解PyTorch 实现的 YOLOv3 中,`YOLOLayer` 的初始化函数定义了检测层的核心属性和行为。以下是 `YOLOLayer` 初始化方法的关键组成部分: #### 锚框 (Anchors) 锚框用于表示预设的目标边界框尺寸。这些尺寸是在数据集上通过聚类算法预先计算好的。对于给定的一组掩码(mask),程序会选择对应的锚框。 ```python mask = x["mask"].split(",") mask = [int(x) for x in mask] anchors = x["anchors"].split(",") anchors = [int(a) for a in anchors] anchors = [(anchors[i], anchors[i+1]) for i in range(0, len(anchors), 2)] anchors = [anchors[i] for i in mask] ``` 这段代码解析并过滤出指定索引位置上的锚框,形成最终使用的锚框列表[^1]。 #### 掩码 (Mask) 掩码决定了当前 YOLO 层会使用哪些锚框来进行目标检测。不同尺度下的特征图对应不同的掩码设置,从而实现多尺度检测能力。 #### 构建检测层对象 创建了一个名为 `detection` 的实例化对象,并将其添加到模块列表中作为新的子模块: ```python detection = DetectionLayer(anchors) module.add_module("Detection_{}".format(index), detection) ``` 这一步骤完成了特定于该层配置项的处理逻辑,其中包含了对输入张量的操作准备过程。 综上所述,在构建 `YOLOLayer` 对象的过程中,主要涉及到了解码配置文件中的锚框信息、应用掩码筛选有效锚框以及注册相应的检测组件至网络结构之中。
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值