我使用火炬学习模型时遇到了问题。
我按照这个方法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。
我不明白我做错了什么以及为什么我的代码比训练/测试期间慢得多。
谢谢!