2016-04-11 38 views
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?

+0

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 . –

+0

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. –

+0

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

cevap

0

benim mac bu aynı sorunu olan ve daha sonra lua komut dosyası çalıştırılırken

source ~/.profile 

ile çözüldü.

Tam talimatlar bulundu: torch.ch

# On Linux with bash 
source ~/.bashrc 
# On Linux with zsh 
source ~/.zshrc 
# On OSX or in Linux with none of the above. 
source ~/.profile