トーチで学習したモデルを使用する際に問題があります。
このハウツー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
(もちろん異なりますが、約 12ms です)。
学習したモデルを他の画像で使用したいので、単純な新しいスクリプトでこれを行いました。
(... 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 /画像です。
何が間違っているのか、なぜ私のコードがトレーニング/テスト中よりもずっと遅いのか理解できません。
ありがとう !