👨💻个人简介: 深度学习图像领域工作者
🎉总结链接:
链接中主要是个人工作的总结,每个链接都是一些常用demo,代码直接复制运行即可。包括:
📌1.工作中常用深度学习脚本
📌2.torch、numpy等常用函数详解
📌3.opencv 图片、视频等操作
📌4.个人工作中的项目总结(纯干活)
链接: https://blog.csdn.net/qq_28949847/article/details/128552785
🎉视频讲解: 以上记录,通过B站等平台进行了视频讲解使用,可搜索 ‘Python图像识别’ 进行观看
B站:Python图像识别
抖音:Python图像识别
西瓜视频:Python图像识别
torch.cuda.synchronize()函数作用:测试模型推理时间
一般测试模型推理时间,我们有下面三种方式:
第一种方式:
start = time.time()
result = model(input)
end = time.time()
print('inference takes {:.3f}s for one image'.format(end - start))
第二种方式:
torch.cuda.synchronize()
start = time.time()
result = model(input)
torch.cuda.synchronize()
end = time.time()
print('inference takes {:.3f}s for one image'.format(end - start))
第三种方式:
start = time.time()
result = model(input)
print(result)
end = time.time()
print('inference takes {:.3f}s for one image'.format(end - start))
一共上述三种测试时间的方式,正确的方式是第二种,为什么是这样呢?
如果采用第一种方式,测试的时间会很短。在pytorch里面,程序的执行都是异步的,因为执行完end=time.time(),python的程序就结束了,但是因为是异步的原因,后台的cuda推理,可能没有结束,所以测试时间会短。
如果采用第二种方式,代码会同步cuda的操作,等待gpu上的操作都完成了再继续end = time.time(),所以第二种是正确的。
如果采用第三种方式,这时候会发现第三种和第二种的时间是类似的,是因为python代码会等待gpu上的结果执行完传给print函数,所以真个的时间就和第二段同步的操作的时间基本上是一致的了,将print(result)换成result.cpu(),时间也是一样的。
734

被折叠的 条评论
为什么被折叠?



