TopK排序三种办法的性能比较和sort()方法

2024-05-24 07:32

本文主要是介绍TopK排序三种办法的性能比较和sort()方法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

TopK排序三种办法的性能比较

start = time.time()
fo = open(resultname, “w”)
task = n2cube.dpuCreateTask(kernel, 0)
print("\n")
height, width, channel, mean = preprocess.parameter(task, KERNEL_CONV_INPUT)
#print(“outputMean = %f”%mean[0])
for i in range(imagenumber):
path = os.path.join(image_folder, listimage[i])
img = cv2.imread(path)
softmax = predict_label(img, task, scale, mean, height, width, channel)
TopK(softmax,listimage[i],fo)
fo.close()
n2cube.dpuDestroyTask(task)
end = time.time()
fps = float(imagenumber/(end-start))
latency = 1000/fps
print("\n%.2f FPS\n" % fps)
print(“latency = %f ms\n” % latency)

第一种

 def TopK(softmax,imagename,fo):q = queue.PriorityQueue()for i in range(len(softmax)):q.put((-softmax[i],i))print(imagename)for i in range(top):ki = q.get()print("ki[0] = %f   ki[1] = %d"%(-ki[0],ki[1])) print('top{} prob = {} name = {}'.format(i, -ki[0],lines[ki[1]]))fo.write(imagename+" "+str(ki[1])+"\n") 

第二种

cnt = [i for i in range(outputchannel)]
def TopK(softmax,imagename, cnt, fo):print(imagename)pair = zip(softmax, cnt)pair = sorted(pair, reverse=True)softmax_new1, cnt_new = zip(*pair)for i in range(top):fo.write(imagename+" "+str(cnt_new[i])+"\n")          print("cnt_new = %d" % cnt_new[i])print("softmax_new1 = %f" % softmax_new1[i])'''

第三种

def TopK(softmax,imagename, cnt, fo):print(imagename)for i in range(top):num = np.argmax(softmax)fo.write(imagename+" "+str(num)+"\n")  print("num = %d" % num)print("softmax = %f" % softmax[num])softmax[num] = 0

int maxArrayIntCount(float* arr, int size)
{
int nCount = 0;
for (int i = 1; i < size; i++)
{
if (arr[i] > arr[nCount])
{
nCount = i;
}
}
return nCount;
}

void TopK(float *d, int size, int k, string imageName) {
//void TopK(const float *d, int size, int k, vector<string> &vkinds, string imgname) {
//  cout << "Load image : " << imageName << endl;int num;for (auto i = 0; i < k; ++i) {num = maxArrayIntCount(d, size);out << imageName << " " << num << endl;d[num] = 0;
//    cout << "number = " << num << endl; }   
}  

sort()

>>> model_path="/home/john/Vitis-AI_1.1/savertest/cifar/build/keras_model"
>>> listfile = [i for i in os.listdir(model_path) if i.endswith("h5")]
>>> listfile
['epoch.006.val_acc.0.17.h5', 'epoch.003.val_acc.0.10.h5', 'epoch.002.val_acc.0.12.h5', 'epoch.005.val_acc.0.15.h5', 'epoch.001.val_acc.0.10.h5', 'epoch.007.val_acc.0.19.h5', 'epoch.004.val_acc.0.14.h5']
>>> listfile.sort()
>>> listfile
['epoch.001.val_acc.0.10.h5', 'epoch.002.val_acc.0.12.h5', 'epoch.003.val_acc.0.10.h5', 'epoch.004.val_acc.0.14.h5', 'epoch.005.val_acc.0.15.h5', 'epoch.006.val_acc.0.17.h5', 'epoch.007.val_acc.0.19.h5']
>>> listfile[::-1]
['epoch.007.val_acc.0.19.h5', 'epoch.006.val_acc.0.17.h5', 'epoch.005.val_acc.0.15.h5', 'epoch.004.val_acc.0.14.h5', 'epoch.003.val_acc.0.10.h5', 'epoch.002.val_acc.0.12.h5', 'epoch.001.val_acc.0.10.h5']

listfile[::-1]必须赋值新变量,因为不会改变自身

model_path=keras_hdf5
listfile = [i for i in os.listdir(model_path) if i.endswith("h5")] 
print("listfile = {}".format(listfile))
listfile.sort()
listfile=listfile[::-1]
print("listfile = {}".format(listfile))

这篇关于TopK排序三种办法的性能比较和sort()方法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

Vue3 的 shallowRef 和 shallowReactive:优化性能

大家对 Vue3 的 ref 和 reactive 都很熟悉,那么对 shallowRef 和 shallowReactive 是否了解呢? 在编程和数据结构中,“shallow”(浅层)通常指对数据结构的最外层进行操作,而不递归地处理其内部或嵌套的数据。这种处理方式关注的是数据结构的第一层属性或元素,而忽略更深层次的嵌套内容。 1. 浅层与深层的对比 1.1 浅层(Shallow) 定义

百度/小米/滴滴/京东,中台架构比较

小米中台建设实践 01 小米的三大中台建设:业务+数据+技术 业务中台--从业务说起 在中台建设中,需要规范化的服务接口、一致整合化的数据、容器化的技术组件以及弹性的基础设施。并结合业务情况,判定是否真的需要中台。 小米参考了业界优秀的案例包括移动中台、数据中台、业务中台、技术中台等,再结合其业务发展历程及业务现状,整理了中台架构的核心方法论,一是企业如何共享服务,二是如何为业务提供便利。

性能测试介绍

性能测试是一种测试方法,旨在评估系统、应用程序或组件在现实场景中的性能表现和可靠性。它通常用于衡量系统在不同负载条件下的响应时间、吞吐量、资源利用率、稳定性和可扩展性等关键指标。 为什么要进行性能测试 通过性能测试,可以确定系统是否能够满足预期的性能要求,找出性能瓶颈和潜在的问题,并进行优化和调整。 发现性能瓶颈:性能测试可以帮助发现系统的性能瓶颈,即系统在高负载或高并发情况下可能出现的问题

性能分析之MySQL索引实战案例

文章目录 一、前言二、准备三、MySQL索引优化四、MySQL 索引知识回顾五、总结 一、前言 在上一讲性能工具之 JProfiler 简单登录案例分析实战中已经发现SQL没有建立索引问题,本文将一起从代码层去分析为什么没有建立索引? 开源ERP项目地址:https://gitee.com/jishenghua/JSH_ERP 二、准备 打开IDEA找到登录请求资源路径位置

【数据结构】——原来排序算法搞懂这些就行,轻松拿捏

前言:快速排序的实现最重要的是找基准值,下面让我们来了解如何实现找基准值 基准值的注释:在快排的过程中,每一次我们要取一个元素作为枢纽值,以这个数字来将序列划分为两部分。 在此我们采用三数取中法,也就是取左端、中间、右端三个数,然后进行排序,将中间数作为枢纽值。 快速排序实现主框架: //快速排序 void QuickSort(int* arr, int left, int rig

【C++】_list常用方法解析及模拟实现

相信自己的力量,只要对自己始终保持信心,尽自己最大努力去完成任何事,就算事情最终结果是失败了,努力了也不留遗憾。💓💓💓 目录   ✨说在前面 🍋知识点一:什么是list? •🌰1.list的定义 •🌰2.list的基本特性 •🌰3.常用接口介绍 🍋知识点二:list常用接口 •🌰1.默认成员函数 🔥构造函数(⭐) 🔥析构函数 •🌰2.list对象

usaco 1.3 Mixing Milk (结构体排序 qsort) and hdu 2020(sort)

到了这题学会了结构体排序 于是回去修改了 1.2 milking cows 的算法~ 结构体排序核心: 1.结构体定义 struct Milk{int price;int milks;}milk[5000]; 2.自定义的比较函数,若返回值为正,qsort 函数判定a>b ;为负,a<b;为0,a==b; int milkcmp(const void *va,c

浅谈主机加固,六种有效的主机加固方法

在数字化时代,数据的价值不言而喻,但随之而来的安全威胁也日益严峻。从勒索病毒到内部泄露,企业的数据安全面临着前所未有的挑战。为了应对这些挑战,一种全新的主机加固解决方案应运而生。 MCK主机加固解决方案,采用先进的安全容器中间件技术,构建起一套内核级的纵深立体防护体系。这一体系突破了传统安全防护的局限,即使在管理员权限被恶意利用的情况下,也能确保服务器的安全稳定运行。 普适主机加固措施:

webm怎么转换成mp4?这几种方法超多人在用!

webm怎么转换成mp4?WebM作为一种新兴的视频编码格式,近年来逐渐进入大众视野,其背后承载着诸多优势,但同时也伴随着不容忽视的局限性,首要挑战在于其兼容性边界,尽管WebM已广泛适应于众多网站与软件平台,但在特定应用环境或老旧设备上,其兼容难题依旧凸显,为用户体验带来不便,再者,WebM格式的非普适性也体现在编辑流程上,由于它并非行业内的通用标准,编辑过程中可能会遭遇格式不兼容的障碍,导致操

黑神话,XSKY 星飞全闪单卷性能突破310万

当下,云计算仍然是企业主要的基础架构,随着关键业务的逐步虚拟化和云化,对于块存储的性能要求也日益提高。企业对于低延迟、高稳定性的存储解决方案的需求日益迫切。为了满足这些日益增长的 IO 密集型应用场景,众多云服务提供商正在不断推陈出新,推出具有更低时延和更高 IOPS 性能的云硬盘产品。 8 月 22 日 2024 DTCC 大会上(第十五届中国数据库技术大会),XSKY星辰天合正式公布了基于星