1
Bir Lua fonksiyonu var ++ c (ile 'nn' gerektirir):Çağrı lua fonksiyonu
require 'nn'
require 'image'
require 'torch'
require './lib/data_augmentation'
function predict (x) do
model = torch.load("trained.t7")
img = image.load(x)
img_tensor = torch.DoubleTensor(2, 3, 32, 32)
img_tensor[1]:copy(img)
x = data_augmentation(img_tensor[1])
preprocessing(x,params)
preds = torch.Tensor(4):zero()
step = 64
for j = 1, x:size(1), step do
batch = torch.Tensor(step, x:size(2), x:size(3), x:size(4)):zero()
n = step
if j + n > x:size(1) then
n = 1 + n - ((j + n) - x:size(1))
end
batch:narrow(1, 1, n):copy(x:narrow(1, j, n))
z = model:forward(batch):float()
for k = 1, n do
preds = preds + z[k]
end
end
preds:div(x:size(1))
confidences, indices = torch.sort(preds,true)
return indices[1]
end
end
ben C++ bu işlevi çağırmak istiyorum, ancak bir hata alıyorum:
PANIC: unprotected error in call to Lua API (attempt to call a nil value)
gereksinim nedeniyle '...'
Ne yapmalıyım, böylece C++ tüm paketleri veya diğer Lua komut dosyalarını (data_augmentation gibi) tanıyabilir mi?
Sen kütüphane bileşenlerinin tümü üzerinde böyle bir şey [ 'luaL_dofile'] (http://pgl.yoyo.org/luai/i/luaL_dofile) çağırmanız gerekir . –
ben data_augmentation gibi oluşturulan komut dosyaları için bunu nasıl anlıyoruz. Ama 'nn', 'Optim', 'resim' ve 'meşale' için, ne yazmalıyım? Derleme komutumla paketlere doğru yol vermem gerektiğini düşünüyorum, değil mi? Şimdiden teşekkür ederim. –
Sana package' kütüphane önce bu senaryoyu yürütmek 'yüklemek gerek. Bu yüzden yeni Lua steti oluşturun, en azından 'base' ve' package' kütüphanesini açın. Bütün standart kütüphaneleri daha iyi açabilir. – moteus