2

トーチで学習したモデルを使用する際に問題があります。

このハウツー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 /画像です。

何が間違っているのか、なぜ私のコードがトレーニング/テスト中よりもずっと遅いのか理解できません。

ありがとう !

4

0 に答える 0