为了将logits转换为0-1的概率,你需要对logits应用softmax函数。softmax函数可以将一个实数向量转换为一个概率分布向量,其中每个元素都是非负的,并且所有元素之和为1。这里是如何使用softmax函数的:
给定一个logits向量$x$,softmax函数可以表示为:
$softmax(x) = \frac{exp(x)}{sum(exp(x))$}
在这个例子中,你已经有了一个名为logits_per_image
的值,大约为40左右。要将其转换为0-1的概率,你可以首先计算每个类别的指数,然后除以所有类别指数的总和。这将给你一个概率分布向量,其中每个元素都是0-1之间的概率。
以下是如何实现这个过程的代码:
import numpy as np
# 假设 logits_per_image 是一个包含40个元素的numpy数组
logits_per_image = np.array([...])
# 计算每个类别的指数
exp_logits = np.exp(logits_per_image)
# 计算总指数
total_exp_logits = np.sum(exp_logits)
# 应用softmax函数并归一化
probs = exp_logits / total_exp_logits
现在,probs
变量包含了一个概率分布向量,其中每个元素都是0-1之间的概率。这些概率可以用来判断输入的单张图和单个文本是否匹配。
3条答案
按热度按时间tct7dpnv1#
您好,由于CLIP需要通过大Batch对比学习进行训练,因此相对来说更适合相对的比较(例如对于C来说,A比B更匹配)。对于绝对的判别(例如A和B是否匹配),可能需要根据具体的任务和数据设定一个经验阈值。
vc9ivgsu2#
我使用这种方法获取文本和图片的相似度,总是得到1.0。
w6lpcovy3#
我用这个方式获取一个文本和一个图片的相似度,总是得到1.0
这是我的代码(其实是git本身的代码,我应该没有去动过这里model.py)