torch.cumsum

cumsum函数用于计算指定维度上的累加和,如示例所示,在一个3x4的张量上按列(-1维度)进行累加。cumulative是累加的意思,cumsum是cumulativesum的缩写。在Python的数值计算库中,如NumPy和PyTorch,这个函数对于序列处理和数据分析非常有用。
摘要由CSDN通过智能技术生成

输出指定维度的累加和

当时去查cumsum这个单词,显示没有这个单词,知道这个函数的意思之后,再反过来看,这是个合成词,cumulative sum 两个单词合成了cumsum,cumlative是累加的意思

语法:

torch.cumsum(input,dim=?)

或者

input.cumsum(dim=?)

示范:

输入:

import torch
x=torch.randint(3,[3,4])
print(x)
torch.cumsum(x,dim=-1)

输出:

tensor([[1, 1, 0, 2],
        [0, 2, 0, 1],
        [1, 1, 1, 1]])
tensor([[1, 2, 2, 4],
        [0, 2, 2, 3],
        [1, 2, 3, 4]])

dim=-1指定累加的维度为-1,加负号是需要倒着数的,-1就是倒数第一个维度,,代码示范中是生成一个三行四列的二维数组,-1在这里就是对应着1维(维数是从0开始的),横向上进行累加(‘横向上’可能跟我们的直观想象不太一样,像sum....都是这样的习惯就好)

def compute_mAP(trn_binary, tst_binary, trn_label, tst_label): """ compute mAP by searching testset from trainset https://github.com/flyingpot/pytorch_deephash """ for x in trn_binary, tst_binary, trn_label, tst_label: x.long() AP = [] Ns = torch.arange(1, trn_binary.size(0) + 1) Ntest = torch.arange(1, tst_binary.size(0) + 1) print("trn_binary.size(0):",trn_binary.size(0)) print("tst_binary.size(0):", tst_binary.size(0)) print("Ns:",Ns) print("Ns:", Ntest) # print("Ns(train):",Ns) for i in range(tst_binary.size(0)): query_label, query_binary = tst_label[i], tst_binary[i] # 把测试图像编码和标签赋值给->查询图像编码和标签 _, query_result = torch.sum((query_binary != trn_binary).long(), dim=1).sort() # 判断查询图像编码是否等于训练图像编码,相等的总和,并排序。 print("查询标签-----------------------------------------------------:",query_label) print("查询二进制:", query_binary) print(len(query_binary)) print("查询结果:",query_result) print("是否相等:",query_binary != trn_binary) print("查询结果1:", torch.sum((query_binary != trn_binary).long(), dim=1)) print("查询结果2:",torch.sum((query_binary != trn_binary).long(), dim=1).sort()) correct = (query_label == trn_label[query_result]).float() # 正确匹配的二进制编码个数 print("trn_label[query_result]:",trn_label[query_result]) num_ones = torch.sum(correct == 1) print("查询正确的个数:",num_ones) print("查询正确:",correct) P = torch.cumsum(correct, dim=0) / Ns print("torch.cumsum(correct, dim=0)",torch.cumsum(correct, dim=0)) print("查询正确/Ns",torch.Tensor(P)) #每个位置的精度 P AP.append(torch.sum(P * correct) / torch.sum(correct)) # print("---:",AP) acc = num_ones / tst_binary.size(0) print("ACC================================== ", acc) mAP = torch.mean(torch.Tensor(AP)) return mAP 请问怎么将这段代码改成EER评估指标的代码
最新发布
07-12
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

铁灵

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

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

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

打赏作者

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

抵扣说明:

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

余额充值