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

相关文章

504 Gateway Timeout网关超时的根源及完美解决方法

《504GatewayTimeout网关超时的根源及完美解决方法》在日常开发和运维过程中,504GatewayTimeout错误是常见的网络问题之一,尤其是在使用反向代理(如Nginx)或... 目录引言为什么会出现 504 错误?1. 探索 504 Gateway Timeout 错误的根源 1.1 后端

从原理到实战解析Java Stream 的并行流性能优化

《从原理到实战解析JavaStream的并行流性能优化》本文给大家介绍JavaStream的并行流性能优化:从原理到实战的全攻略,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的... 目录一、并行流的核心原理与适用场景二、性能优化的核心策略1. 合理设置并行度:打破默认阈值2. 避免装箱

深度剖析SpringBoot日志性能提升的原因与解决

《深度剖析SpringBoot日志性能提升的原因与解决》日志记录本该是辅助工具,却为何成了性能瓶颈,SpringBoot如何用代码彻底破解日志导致的高延迟问题,感兴趣的小伙伴可以跟随小编一起学习一下... 目录前言第一章:日志性能陷阱的底层原理1.1 日志级别的“双刃剑”效应1.2 同步日志的“吞吐量杀手”

MySQL 表空却 ibd 文件过大的问题及解决方法

《MySQL表空却ibd文件过大的问题及解决方法》本文给大家介绍MySQL表空却ibd文件过大的问题及解决方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考... 目录一、问题背景:表空却 “吃满” 磁盘的怪事二、问题复现:一步步编程还原异常场景1. 准备测试源表与数据

python 线程池顺序执行的方法实现

《python线程池顺序执行的方法实现》在Python中,线程池默认是并发执行任务的,但若需要实现任务的顺序执行,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋... 目录方案一:强制单线程(伪顺序执行)方案二:按提交顺序获取结果方案三:任务间依赖控制方案四:队列顺序消

SpringBoot通过main方法启动web项目实践

《SpringBoot通过main方法启动web项目实践》SpringBoot通过SpringApplication.run()启动Web项目,自动推断应用类型,加载初始化器与监听器,配置Spring... 目录1. 启动入口:SpringApplication.run()2. SpringApplicat

使用Java读取本地文件并转换为MultipartFile对象的方法

《使用Java读取本地文件并转换为MultipartFile对象的方法》在许多JavaWeb应用中,我们经常会遇到将本地文件上传至服务器或其他系统的需求,在这种场景下,MultipartFile对象非... 目录1. 基本需求2. 自定义 MultipartFile 类3. 实现代码4. 代码解析5. 自定

Python文本相似度计算的方法大全

《Python文本相似度计算的方法大全》文本相似度是指两个文本在内容、结构或语义上的相近程度,通常用0到1之间的数值表示,0表示完全不同,1表示完全相同,本文将深入解析多种文本相似度计算方法,帮助您选... 目录前言什么是文本相似度?1. Levenshtein 距离(编辑距离)核心公式实现示例2. Jac

C#高效实现Word文档内容查找与替换的6种方法

《C#高效实现Word文档内容查找与替换的6种方法》在日常文档处理工作中,尤其是面对大型Word文档时,手动查找、替换文本往往既耗时又容易出错,本文整理了C#查找与替换Word内容的6种方法,大家可以... 目录环境准备方法一:查找文本并替换为新文本方法二:使用正则表达式查找并替换文本方法三:将文本替换为图

SQL Server 查询数据库及数据文件大小的方法

《SQLServer查询数据库及数据文件大小的方法》文章介绍了查询数据库大小的SQL方法及存储过程实现,涵盖当前数据库、所有数据库的总大小及文件明细,本文结合实例代码给大家介绍的非常详细,感兴趣的... 目录1. 直接使用SQL1.1 查询当前数据库大小1.2 查询所有数据库的大小1.3 查询每个数据库的详