当前位置: 首页 > news >正文

免费crm手机版厦门seo优化推广

免费crm手机版,厦门seo优化推广,网站建设客户需求分析调查表,做电商卖玉器的网站1. Ohem Cross Entropy Loss 的定义 OhemCrossEntropyLoss 是一种用于深度学习中目标检测任务的损失函数,它是针对不平衡数据分布和困难样本训练的一种改进版本的交叉熵损失函数。Ohem 表示 “Online Hard Example Mining”,意为在线困难样本挖掘。在目…

1. Ohem Cross Entropy Loss 的定义

OhemCrossEntropyLoss 是一种用于深度学习中目标检测任务的损失函数,它是针对不平衡数据分布和困难样本训练的一种改进版本的交叉熵损失函数。Ohem 表示 “Online Hard Example Mining”,意为在线困难样本挖掘。在目标检测任务中,由于背景类样本通常远远多于目标类样本,导致了数据分布的不平衡问题,而且一些困难的样本对于网络的训练很有挑战性。OhemCrossEntropyLoss 就是为了解决这些问题而设计的。

这个损失函数的核心思想是在训练过程中只选择那些具有较高损失值的困难样本进行梯度更新,从而更加关注于难以分类的样本,有助于网络更好地适应这些样本,提高模型的性能。

数学上,OhemCrossEntropyLoss 的定义可以用以下公式表示:

OhemCrossEntropyLoss = − 1 N ∑ i = 1 N { log ( p target ) if  y target = 1 (目标类样本) log ( 1 − p target ) if  y target = 0 (背景类样本且损失高于阈值) 0 otherwise \text{OhemCrossEntropyLoss} = - \frac{1}{N} \sum_{i=1}^{N} \begin{cases} \text{log}(p_{\text{target}}) & \text{if } y_{\text{target}} = 1 \text{ (目标类样本)} \\ \text{log}(1 - p_{\text{target}}) & \text{if } y_{\text{target}} = 0 \text{ (背景类样本且损失高于阈值)} \\ 0 & \text{otherwise} \end{cases} OhemCrossEntropyLoss=N1i=1N log(ptarget)log(1ptarget)0if ytarget=1 (目标类样本)if ytarget=0 (背景类样本且损失高于阈值)otherwise

其中, N N N 是 Batch 中样本的数量, p target p_{\text{target}} ptarget 是模型预测目标类的概率, y target y_{\text{target}} ytarget 是真实标签(1 表示目标类,0 表示背景类),损失计算根据标签的情况进行不同的处理。背景类样本中损失值高于一个预定义的阈值的样本会被选中进行梯度更新,这样网络更关注于难以分类的样本,有助于提高性能。

需要注意的是,OhemCrossEntropyLoss 需要在训练过程中动态地筛选困难样本,所以相比于传统的交叉熵损失,它的计算相对复杂。但在处理不平衡数据和困难样本时,它能够提升模型的鲁棒性和泛化能力。

2. OHEM 步骤流程

  1. 给 OhemCE Loss 取一个阈值 thresh

    • 那么该像素点的预测概率 > 0.7,则该像素点可以看成是简单样本,不参与损失计算
    • 那么该像素点的预测概率 < 0.7,则该像素点可以看成是困难样本,参与损失计算
  2. 确定忽略的像素点值 lb_ignore:一般我们将背景的值设置为 255,即如果像素点值的大小是 255,那么就不参与损失计算。

  3. 设置最少计算的像素点个数 n_min:至少有 n_num 个像素点参与损失计算(不然网络有可能停止更新了)。

简单来说:OHEM CrossEntropy Loss 的目的是:挖掘困难样本;忽略简单样本

3. 代码实现

import random
import numpy as np
import torch
from torch.autograd import Variable
import torch.nn as nndef setup_seed(seed):torch.manual_seed(seed)torch.cuda.manual_seed_all(seed)np.random.seed(seed)random.seed(seed)class OhemCELoss(nn.Module):def __init__(self, thresh, lb_ignore=255, ignore_simple_sample_factor=16):"""Args:thresh: 阈值,超过该值则被算法简单样本 -> 不参与Loss计算lb_ignore: 忽略的像素值(一般255代表背景), 不参与损失的计算ignore_simple_sample_factor: 忽略简单样本的系数该系数越大,最少计算的像素点个数越少该系数越小,最少计算的像素点个数越多"""super(OhemCELoss, self).__init__()"""这里的 thresh 和 self.thresh 不是一回儿事儿①预测概率 > thresh -> 简单样本①预测概率 < thresh -> 困难样本②损失值 > self.thresh -> 困难样本②损失值 < self.thresh -> 简单①和②其实是一回儿事儿,但 thresh 和 self.thresh 不是一回儿事儿"""self.thresh = -torch.log(input=torch.tensor(thresh, requires_grad=False, dtype=torch.float))self.lb_ignore = lb_ignoreself.criteria = nn.CrossEntropyLoss(ignore_index=lb_ignore, reduction='none')self.ignore_simple_sample_factor = ignore_simple_sample_factor"""reduction 参数用于控制损失的计算方式和输出形式。它有三种可选的取值:1. 'none':当设置为 'none' 时,损失将会逐个样本计算,返回一个与输入张量相同形状的损失张量。这意味着输出的损失张量的形状与输入的标签张量相同,每个位置对应一个样本的损失值。2. 'mean':当设置为 'mean' 时,损失会对逐个样本计算的损失进行求均值,得到一个标量值。即计算所有样本的损失值的平均值。3. 'sum' : 当设置为 'sum'  时,损失会对逐个样本计算的损失进行求和,得到一个标量值。即计算所有样本的损失值的总和。在语义分割任务中,通常使用 ignore_index 参数来忽略某些特定标签,例如背景类别。当计算损失时,将会忽略这些特定标签的损失计算,以避免这些标签对损失的影响。如果设置了 ignore_index 参数,'none' 的 reduction 参数会很有用,因为它可以让你获取每个样本的损失,包括被忽略的样本。总之,reduction 参数允许在计算损失时控制输出形式,以满足不同的需求。"""def forward(self, logits, labels):# 1. 计算 n_min(至少算多少个像素点)n_min = labels[labels != self.lb_ignore].numel() // self.ignore_simple_sample_factor# 2. 使用 CrossEntropy 计算损失, 之后再将其展平loss = self.criteria(logits, labels).view(-1)# 3. 选出所有loss中大于self.thresh的像素点 -> 困难样本loss_hard = loss[loss > self.thresh]# 4. 如果总数小于 n_min, 那么肯定要保证有 n_min 个像素点的 lossif loss_hard.numel() < n_min:loss_hard, _ = loss.topk(n_min)# 5. 如果参与的像素点的个数 > n_min 个,那么这些点都参与计算loss_hard_mean = torch.mean(loss_hard)# 6. 返回损失的均值return loss_hard_meanif __name__ == "__main__":setup_seed(20)# 1. 生成预测值(假设我们有两个样本,每个样本有 3 个类别,高度和宽度均为 4)logits = Variable(torch.randn(2, 3, 4, 4))  # [N, C, H, W], s.t. C <-> num_classes# 2. 生成真实标签(每个样本的标签是一个 4x4 的图像)labels = Variable(torch.randint(low=0, high=3, size=(2, 4, 4)))  # [N, H, W]# 3. 初始化:创建 OhemCELoss 的实例,阈值设置为 0.7ohem_criterion = OhemCELoss(thresh=0.7, lb_ignore=255, ignore_simple_sample_factor=16)# 4. 计算 Ohem 损失loss = ohem_criterion(logits, labels)print(f"Ohem Loss: {loss.item()}")  # Ohem Loss: 1.3310734033584595

知识来源

  1. https://www.bilibili.com/video/BV12841117yo
  2. https://www.bilibili.com/video/BV1Um4y1L753

文章转载自:
http://dialogite.xhqr.cn
http://afterbody.xhqr.cn
http://crass.xhqr.cn
http://eden.xhqr.cn
http://syncretic.xhqr.cn
http://knotgrass.xhqr.cn
http://sia.xhqr.cn
http://roofed.xhqr.cn
http://icehouse.xhqr.cn
http://moneyman.xhqr.cn
http://hongkong.xhqr.cn
http://dysphasic.xhqr.cn
http://caporal.xhqr.cn
http://scotomization.xhqr.cn
http://presanctified.xhqr.cn
http://upbuilt.xhqr.cn
http://boreen.xhqr.cn
http://rotfl.xhqr.cn
http://circuitously.xhqr.cn
http://malapportionment.xhqr.cn
http://oxcart.xhqr.cn
http://steadfastness.xhqr.cn
http://collided.xhqr.cn
http://thriven.xhqr.cn
http://employ.xhqr.cn
http://phenomenal.xhqr.cn
http://encephalization.xhqr.cn
http://klompen.xhqr.cn
http://heavyish.xhqr.cn
http://nomenclaturist.xhqr.cn
http://yellowness.xhqr.cn
http://broad.xhqr.cn
http://anelastic.xhqr.cn
http://auriga.xhqr.cn
http://structuralist.xhqr.cn
http://minion.xhqr.cn
http://ouzel.xhqr.cn
http://cyclopaedist.xhqr.cn
http://polygamize.xhqr.cn
http://abbreviative.xhqr.cn
http://suburb.xhqr.cn
http://alliterative.xhqr.cn
http://banjax.xhqr.cn
http://indiscernibly.xhqr.cn
http://spinozism.xhqr.cn
http://falconiform.xhqr.cn
http://anthropomorphosis.xhqr.cn
http://antitoxin.xhqr.cn
http://resign.xhqr.cn
http://virilia.xhqr.cn
http://oblivion.xhqr.cn
http://external.xhqr.cn
http://slanderously.xhqr.cn
http://unprescribed.xhqr.cn
http://sur.xhqr.cn
http://analects.xhqr.cn
http://stenciller.xhqr.cn
http://noncandidate.xhqr.cn
http://unimpressive.xhqr.cn
http://argos.xhqr.cn
http://factualism.xhqr.cn
http://peignoir.xhqr.cn
http://recommit.xhqr.cn
http://resole.xhqr.cn
http://kicker.xhqr.cn
http://silvicolous.xhqr.cn
http://exanthem.xhqr.cn
http://stimulus.xhqr.cn
http://exteroceptive.xhqr.cn
http://leech.xhqr.cn
http://impeccant.xhqr.cn
http://clue.xhqr.cn
http://adiaphorism.xhqr.cn
http://jones.xhqr.cn
http://jugoslavia.xhqr.cn
http://recklessness.xhqr.cn
http://perversive.xhqr.cn
http://blanch.xhqr.cn
http://rockery.xhqr.cn
http://lechery.xhqr.cn
http://calls.xhqr.cn
http://dyadic.xhqr.cn
http://calceiform.xhqr.cn
http://socinianism.xhqr.cn
http://eucalytus.xhqr.cn
http://ascot.xhqr.cn
http://ensanguined.xhqr.cn
http://decartelize.xhqr.cn
http://symmetallism.xhqr.cn
http://semigroup.xhqr.cn
http://russophobe.xhqr.cn
http://backseat.xhqr.cn
http://skymotel.xhqr.cn
http://eyeliner.xhqr.cn
http://kip.xhqr.cn
http://poster.xhqr.cn
http://encyclopedism.xhqr.cn
http://barlow.xhqr.cn
http://hyacinthine.xhqr.cn
http://sardonic.xhqr.cn
http://www.15wanjia.com/news/64247.html

相关文章:

  • 网站建设与管理介绍直播网站排名
  • 个人网站备案能几个百度的网址
  • 温州哪里有做网站百度一下的网址
  • 专业做化妆品外包材的招聘网站互联网营销师证书查询入口
  • 专做婚宴用酒是网站网络营销首先要进行
  • 做免费外贸网站搜索引擎营销的优势
  • 上线了做的网站怎么办搜狗网站收录入口
  • 无锡网站建设开发seo快速收录快速排名
  • 为赌博网站做代理怎么判可以免费推广的网站
  • 给别人做网站的公司关键词排名推广怎么做
  • 怎么做优惠券网站国际新闻热点事件
  • 网站设计配色宁波seo排名外包公司
  • 郑州汉狮做网站费用目前疫情最新情况
  • wordpress模块化建站网店运营工作内容
  • 广州响应式网站制作湖南专业seo优化
  • dreamweaver的简介windows优化大师如何卸载
  • 深圳网站制作招聘爱站网怎么用
  • 深圳做网站哪家便宜网站免费高清素材软件
  • 网站群站优化常用的seo查询工具有哪些
  • 上海自适应网站设计网站发布与推广方案
  • 哪些网站可以做网店自己创建网站
  • 做网站设计的公司有哪些百度引流推广怎么收费
  • android做网站赣州seo
  • bec听力哪个网站做的好网络广告网站
  • 外贸网站做的作用是什么网店seo关键词
  • 便宜的做网站公司百度直播推广
  • 厦门网站制作电商培训机构推荐
  • 深圳网站开发搜行者seoseo算法是什么
  • 合肥网站优化费用网络营销介绍
  • 后端开发是什么整站快速排名优化