火炬:学习/测试时模型快速,使用时速度慢

时间:2015-04-22 15:21:18

标签: torch

我使用火炬学习模型时遇到了问题。

我按照这个方法http://code.cogbits.com/wiki/doku.php?id=tutorial_supervised来训练模型。一切都很好,我的模型经过训练,当我使用我的模型时,我已经纠正了结果。但它很慢!

培训的测试部分如下:

model:evaluate()

-- test over test data
print('==> testing on test set:')
for t = 1,testData:size() do
   -- disp progress
   xlua.progress(t, testData:size())

   -- get new sample
   local input = testData.data[t]
   if opt.type == 'double' then input = input:double()
   elseif opt.type == 'cuda' then input = input:cuda() end
   local target = testData.labels[t]

   -- test sample
   local pred = model:forward(input)
   confusion:add(pred, target)
end

-- timing
time = sys.clock() - time
time = time / testData:size()
print("\n==> time to test 1 sample = " .. (time*1000) .. 'ms')

我在测试期间记录了以下速度:

==> time to test 1 sample = 12.419194088996ms

(当然它有所不同,但它大约是12毫秒)。

我想在其他图像上使用学习模型,所以我用一个简单的新脚本来做到这一点:

(... requires)

torch.setnumthreads(8)
torch.setdefaulttensortype('torch.FloatTensor')

model = torch.load('results/model.net')
model:evaluate()

(... Image loading, resizing and normalization)

local time = sys.clock()

local result_info = model:forward(cropped_image:double())

print("==> time to test 1 frame = " .. (sys.clock() - time) * 1000 .. "ms")

花费的时间要大得多,我有以下输出:==> time to test 1 frame = 212.7647127424ms

我测试了多个图像,总是在时钟测量之外调整大小和标准化,我总是有> 200ms / image。

我不明白我做错了什么以及为什么我的代码比训练/测试期间慢得多。

谢谢!

0 个答案:

没有答案