计算两向量之间的夹角,区分正负

在这里插入图片描述

double computeAngle(double x1, double y1, double x2, double y2, double x3, double y3) {
	//A(x1,y1)
	//B(x2,y2)
	//C(x3,y3)
	//AB (x2-x1, y2-y1)
	//AC (x3-x1, y3-y1)
	double cosphi = ((x2-x1)*(x3-x1)+(y2-y1)*(y3-y1)) / sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1)) / sqrt((x3-x1)*(x3-x1)+(y3-y1)*(y3-y1));
	double phi = acos(cosphi);
	if ((x2-x1)*(y3-y1)-(x3-x1)*(y2-y1) < 0) {
		phi = -phi;
	}
	return phi;
}
### CLIP 模型中的正负样本算法逻辑 CLIP (Contrastive Language–Image Pre-training) 是一种多模态模型,旨在学习联合图像和文本嵌入空间。为了实现这一目标,在训练过程中采用了对比损失函数来区分正样本对和负样本对。 #### 正样本定义 对于每一对输入数据(即一张图片及其对应的描述),这些配对被认为是正样本。具体来说,如果有一个批次包含 N 张图片以及相应的 N 条文字说明,则这 N 对构成了该批处理过程中的全部正样本[^1]。 #### 负样本构建策略 除了上述提到的真实匹配外,其他所有的组合都被视为负样本。这意味着在一个大小为N的批量中,每个真实的图文对会与其他(N-1)个不相关的图或文形成错误关联,从而创建大量的负样例用于监督信号的学习[^2]。 #### 计算相似度得分 为了衡量不同样本之间的关系强度,通常采用余弦相似度作为评分机制。给定两个向量 \( \textbf{x} \) 和 \( \textbf{y} \),它们之间夹角越小表示者更接近: \[ s(\textbf{x}, \textbf{y}) = \frac{\textbf{x}\cdot\textbf{y}}{\|\textbf{x}\|_2\|\textbf{y}\|_2} \] 其中 \( s() \) 表示计算得到的分数;\( \|.\|_2 \) 代表 L2范数操作。 ```python import torch.nn.functional as F def cosine_similarity(x, y): return F.cosine_similarity(x, y) ``` #### 应用温度参数调整分布特性 引入了一个超参——温度τ(temperature), 它可以用来控制最终输出概率分布的锐利程度。较低值会使预测更加集中于最高分项上,而较高则趋向均匀化分配可能性权重: \[ p_{i,j}=softmax(sim(i,j)/τ)=\exp{(sim(i,j)/τ)} / {\sum_k \exp{(sim(k,j)/τ)}} \] 这里 \( sim(i,j) \) 就是指之前所介绍过的成对间的相似性测量结果。 ```python tau = 0.07 # 温度系数设定 probs = F.softmax(scores / tau, dim=-1) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

YMWM_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值