计算网络模型的推理时间,网络模型的推理过程是在gpu上进行的。
方法一:
import torch
import time
net = net().to('cuda') # 网络模型
input = input.to('cuda') # 输入
time_start = time.time()
predict = net(input)
time_end = time.time()
time_sum = time_end - time_start
print(time_sum)
方法二:
import torch
import time
net = net().to('cuda') # 网络模型
input = input.to('cuda') # 输入
torch.cuda.synchronize()
time_start = time.time()
predict = net(input)
torch.cuda.synchronize()
time_end = time.time()
time_sum = time_end - time_start
print(time_sum)
方法一是正常计算程序的运算时间,比较适合计算程序在cpu的时间,对于网络模型在gpu的运算时间,方法二比较准确。如果采用方法一,测试的时间会很短,因为执行完time_end=time.time()程序就退出了,后台的cu也因为python的退出而退出了。如果采用方法二来计算,torch.cuda.synchronize()会同步时钟的,等待gpu上的操作执行完才执行time_end=time.time()。
方法三:
import torch
import time
net = net().to('cuda') # 网络模型
input = input.to('cuda') # 输入
time_start = time.time()
predict = net(input)
print(predict) # 输出结果
time_end = time.time()
time_sum = time_end - time_start
print(time_sum)
方法三得到的时间和方法二差不多,也可以把print(predict)换成predict=predict.to(‘cpu’),计算出来的时间也差不多。