mini_batch 中在特征的层面拉近同类内积 推远异类内积

2024-03-10 08:58

本文主要是介绍mini_batch 中在特征的层面拉近同类内积 推远异类内积,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在mini  batch中,我要返回一个(batch_size, dim)尺寸的张量,然后计算相同类别之间的平均内积,和异类之间的平均内积。

这里其实有一点可以考虑,咱们到底是将内积作为目标函数来优化好,还是将距离作为目标函数来优化好呢?

如果是内积的话,同类的好说,同类之间的内积越接近1越好,异类之间的内积,是接近0好,还是-1好呢?这确实是一个问题。

在我下面的代码中,我是将异类的内积设计为-1为目标值了,注意,送到Pull_Push_Features_loss 中的特征参数已经是经过二范数规范后的了。

class Pull_Push_Features_loss(nn.Module): #特征拉近推远损失 def __init__(self):super(Pull_Push_Features_loss,self).__init__()def forward(self,features, batch_size, person_num):#features是经过renorm(2,0,1e-5).mul(1e5)后的特征,尺寸为(batch_size,dim),dim为特征的长度,person_num为每个label具有的图片数量,用这种损失函数,在训练的时候,送入网络的数据都是N*K形式的组合。ID_num = batch_size // person_num #计算一共有多少个labelloss_all = 0pull_distance_all = 0#计算相同label之间的平均内积,目标为1最好,所以用了1-distancefor id_index in range(ID_num):features_temp_list = features[id_index * person_num:(id_index + 1) * person_num ]loss_temp = 0distance = torch.mm(features_temp_list, features_temp_list.t())distance = 1 - distancepull_distance_all = pull_distance_all + distance.sum()pull_distance_avg = pull_distance_all / ( ID_num * ( person_num * (person_num-1) ) )dif_ID_features = features[0:1]for i in range(1,ID_num):dif_ID_features = torch.cat( (dif_ID_features, features[i*person_num:i*person_num + 1] ), 0 )mat_similary = torch.mm(dif_ID_features, dif_ID_features.t())push_similary_all = torch.sum(mat_similary) - ID_numpush_similary_avg = push_similary_all / ( ID_num * ID_num - ID_num )loss = pull_distance_avg + push_similary_avgreturn loss

我想了想,其实也没那么多事,就是我用了余弦距离作为衡量标准而已

这篇关于mini_batch 中在特征的层面拉近同类内积 推远异类内积的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/793717

相关文章

OmniGlue论文详解(特征匹配)

OmniGlue论文详解(特征匹配) 摘要1. 引言2. 相关工作2.1. 广义局部特征匹配2.2. 稀疏可学习匹配2.3. 半稠密可学习匹配2.4. 与其他图像表示匹配 3. OmniGlue3.1. 模型概述3.2. OmniGlue 细节3.2.1. 特征提取3.2.2. 利用DINOv2构建图形。3.2.3. 信息传播与新的指导3.2.4. 匹配层和损失函数3.2.5. 与Super

《计算机视觉工程师养成计划》 ·数字图像处理·数字图像处理特征·概述~

1 定义         从哲学角度看:特征是从事物当中抽象出来用于区别其他类别事物的属性集合,图像特征则是从图像中抽取出来用于区别其他类别图像的属性集合。         从获取方式看:图像特征是通过对图像进行测量或借助算法计算得到的一组表达特性集合的向量。 2 认识         有些特征是视觉直观感受到的自然特征,例如亮度、边缘轮廓、纹理、色彩等。         有些特征需要通

HalconDotNet中的图像特征与提取详解

文章目录 简介一、边缘特征提取二、角点特征提取三、区域特征提取四、纹理特征提取五、形状特征提取 简介   图像特征提取是图像处理中的一个重要步骤,用于从图像中提取有意义的特征,以便进行进一步的分析和处理。HalconDotNet提供了多种图像特征提取方法,每种方法都有其特定的应用场景和优缺点。 一、边缘特征提取   边缘特征提取是图像处理中最基本的特征提取方法之一,通过检

WebShell流量特征检测_哥斯拉篇

90后用菜刀,95后用蚁剑,00后用冰蝎和哥斯拉,以phpshell连接为例,本文主要是对后三款经典的webshell管理工具进行流量分析和检测。 什么是一句话木马? 1、定义 顾名思义就是执行恶意指令的木马,通过技术手段上传到指定服务器并可以正常访问,将我们需要服务器执行的命令上传并执行 2、特点 短小精悍,功能强大,隐蔽性非常好 3、举例 php一句话木马用php语言编写的,运行

图特征工程实践指南:从节点中心性到全局拓扑的多尺度特征提取

图结构在多个领域中扮演着重要角色,它能有效地模拟实体间的连接关系,通过从图中提取有意义的特征,可以获得宝贵的信息提升机器学习算法的性能。 本文将介绍如何利用NetworkX在不同层面(节点、边和整体图)提取重要的图特征。 本文将以NetworkX库中提供的Zachary网络作为示例。这个广为人知的数据集代表了一个大学空手道俱乐部的社交网络,是理解图特征提取的理想起点。 我们先定义一些辅助函数

【ML--05】第五课 如何做特征工程和特征选择

一、如何做特征工程? 1.排序特征:基于7W原始数据,对数值特征排序,得到1045维排序特征 2. 离散特征:将排序特征区间化(等值区间化、等量区间化),比如采用等量区间化为1-10,得到1045维离散特征 3. 计数特征:统计每一行中,离散特征1-10的个数,得到10维计数特征 4. 类别特征编码:将93维类别特征用one-hot编码 5. 交叉特征:特征之间两两融合,x+y、x-y、

【机器学习 sklearn】特征筛选feature_selection

特征筛选更加侧重于寻找那些对模型的性能提升较大的少量特征。 继续沿用Titannic数据集,这次试图通过特征刷选来寻找最佳的特征组合,并且达到提高预测准确性的目标。 #coding:utf-8from __future__ import divisionimport sysreload(sys)sys.setdefaultencoding('utf-8')import timest

【python 走进pytotch】pytorch实现用Resnet提取特征

无意中发现了一个巨牛的人工智能教程,忍不住分享一下给大家。教程不仅是零基础,通俗易懂, 而且非常风趣幽默,像看小说一样!觉得太牛了,所以分享给大家。点这里可以跳转到教程。人工智能教程 准备一张图片,pytorch可以方便地实现用预训练的网络提取特征。 下面我们用pytorch提取图片采用预训练网络resnet50,提取图片特征。 # -*- coding: utf-8 -*-import os

一键部署Phi 3.5 mini+vision!多模态阅读基准数据集MRR-Benchmark上线,含550个问答对

小模型又又又卷起来了!微软开源三连发!一口气发布了 Phi 3.5 针对不同任务的 3 个模型,并在多个基准上超越了其他同类模型。 其中 Phi-3.5-mini-instruct 专为内存或算力受限的设备推出,小参数也能展现出强大的推理能力,代码生成、多语言理解等任务信手拈来。而 Phi-3.5-vision-instruct 则是多模态领域的翘楚,能同时处理文本和视觉信息,图像理解、视频摘要

快手HBase在千亿级用户特征数据分析中的应用与实践

声明:本文的原文是来自Hbase技术社区的一个PPT分享,个人做了整理和提炼。大家注意哈,这种会议PPT类的东西能学习到的更多的是技术方案和他人在实践过程中的经验。希望对大家有帮助。 背景 快手每天产生数百亿用户特征数据,分析师需要在跨30-90天的数千亿特征数据中,任意选择多维度组合(如:城市=北京&性别=男),秒级分析用户行为。针对这一需求, 快手基于HBase自主研发了支持bitmap转