import pdb
import time
import torch
import torchvision.models as models
from torch.autograd import Variable
class Timer(object):
"""A simple timer."""
def __init__(self):
self.total_time = 0.
self.calls = 0
self.start_time = 0.
self.diff = 0.
self.average_time = 0.
def tic(self):
# using time.time instead of time.clock because time time.clock
# does not normalize for multithreading
self.start_time = time.time()
def toc(self, average=True):
self.diff = time.time() - self.start_time
self.total_time += self.diff
self.calls += 1
self.average_time = self.total_time / self.calls
if average:
return self.average_time
else:
return self.diff
GPUID = 1
resnet34 = models.resnet34(pretrained=True)
resnet34.cuda(GPUID)
x = torch.rand(1,3,400,400)
x = Variable(x.cuda(GPUID))
# preheat
y = resnet34(x)
timer = Timer()
timer.tic()
for i in xrange(100):
y = resnet34(x)
timer.toc()
print ('Do once forward need {:.3f}ms ').format(timer.total_time*1000/100.0)
计算一下pytorch中Resnet34模型前传一次所需要的时间
最新推荐文章于 2024-08-22 14:30:41 发布