Lua 抛出错误 luajit: error loading module 'libpaths' from file

我安装了Lua 5.2、Torch版本 7、Ubuntu版本 14.04 trusty。

我正在尝试运行以下代码 ++++++++++++++++++++++code++++++++++++++++++++++++++++++++++++++++++++

require 'neuralconvo' require 'xlua'
-- 加载数据集
print("--Loading Dataset")
dataset=neuralconvo.Dataset(neuralconvo.CornellMovieDiaogs("data/cornell_movie_diaogs"),
{   loadFirst = options.dataset,
    minWordFreq = options.minWordFreq
})

--构建模型
model = neuralconvo.Seq2Seq(dataset.wordsCount, options.hiddenSize) model.goToken = dataset.goToken
model.eosToken=dataset.eosToken

--训练参数
model.criterion=nn.SequencerCriterion(nn.ClassNLLCriterion())
model.learningRaw =  options.learningRate
model.momentum = otions.momentum
local decayFactor = (options.minLR - options.learningRate)/options.saturateEpoch local minMeanError = nil

-- 使能 Cuda
if options.cuda then
    require 'cutorch'
    require 'cunn'
elseif options.opencl then
    require 'cltorch'
    require 'clnn'
    model:cl()
end

-- 使用反向传播算法训练模型
for epoch = 1,options.maxEpoch do
    local errors = torch.Tensor(dataset.examplesCount):fill(0)
    local timer=torch.timer()
    local i=1
    for examples in dataset:batches(options.batchSize) do
            collectgarbage()
            for _, example in ipairs(examples) do
                    local input, target = unpack(examples) do
                    if options.cuda then
                        input = input:cuda()
                        target = target:cuda()
                    elseif options.opencl then
                        input = input:cl()
                        target = target:cl()
                    end
                    local err=model:train(input, target)
                        if err ~= err then
                            error("Invalid error! Exiting.")
                        end
                    errors[i] = err
                    xlua.progress(i, dataset.examplesCount)
                    i=i+1
                    end
             end
             timer:stop()
--如果没有改进,则保存模型
if minMeanError == nil or errors:mean() < minMeanError then
                print("\n(Saving model...)")
                torch.save("data/model.t7",model)
                minMeanError=errors:mean()
           end
-- 更新学习率
    model.learningRate = model.learningRate + decayFactor
    model.learningRate = math.max(options.minLR,model.learningRate)
end
end

   =============================================================

我遇到了以下错误

luajit: error loading module 'libpaths' from file '/home/guru99u2/torch/install/lib/lua/5.2/libpaths.so':
    /home/guru99u2/torch/install/lib/lua/5.2/libpaths.so: undefined symbol: luaL_setfuncs
stack traceback:
    [C]: at 0x00450240
    [C]: in function 'require'
    /home/guru99u2/torch/install/share/lua/5.2/paths/init.lua:1: in main chunk
    [C]: in function 'require'
    /home/guru99u2/torch/install/share/lua/5.2/torch/init.lua:12: in main chunk
    [C]: in function 'require'
    ./neuralconvo.lua:1: in main chunk
    [C]: in function 'require'
    bot.lua:1: in main chunk
    [C]: at 0x00404d60
点赞
用户1442917
用户1442917

在安装过程中出了些问题(或者你没有清除之前的版本),因为你试图使用为 Lua 5.2 编写的模块与支持 Lua 5.1 ABI 的解释器(在这种情况下是 LuaJIT)进行搭配使用。因此,你会得到 undefined symbol: luaL_setfuncs 错误,因为动态库期望包含该函数,但加载的解释器不提供它。

Torch 支持 LuaJIT 和 Lua 5.2,但在切换 Lua 版本时,你需要按照文档中指示运行 ./clean.sh 脚本。

2016-09-28 14:27:52