Lua 抛出错误 luajit: error loading module 'libpaths' from file
Posted
技术标签:
【中文标题】Lua 抛出错误 luajit: error loading module \'libpaths\' from file【英文标题】:Lua throws error luajit: error loading module 'libpaths' from fileLua 抛出错误 luajit: error loading module 'libpaths' from file 【发布时间】:2017-02-06 08:32:21 【问题描述】:我已经安装了 lua 5.2、Torch 版本 7、Ubuntu 版本 14.04 值得信赖
我正在尝试运行以下代码 ++++++++++++++++++++++++代码++++++++++++++++++++++++++++++++++++++++++++++
require 'neuralconvo' require 'xlua'
-- Load Dataset
print("--Loading Dataset")
dataset=neuralconvo.Dataset(neuralconvo.CornellMovieDiaogs("data/cornell_movie_diaogs"),
loadFirst = options.dataset,
minWordFreq = options.minWordFreq
)
--Build Model
model = neuralconvo.Seq2Seq(dataset.wordsCount, options.hiddenSize) model.goToken = dataset.goToken
model.eosToken=dataset.eosToken
--Training Parameters
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
--Enable Cuda
if options.cuda then
require 'cutorch'
require 'cunn'
elseif options.opencl then
require 'cltorch'
require 'clnn'
model:cl()
end
-- Train Model using backpropogation
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()
--Save the model if not Improved
if minMeanError == nil or errors:mean() < minMeanError then
print("\n(Saving model...)")
torch.save("data/model.t7",model)
minMeanError=errors:mean()
end
-- Update Learning Rate
model.learningRate = model.learningRate + decayFactor
model.learningRate = math.max(options.minLR,model.learningRate)
end
end
=============================================================
我收到以下错误
luajit:从文件“/home/guru99u2/torch/install/lib/lua/5.2/libpaths.so”加载模块“libpaths”时出错: /home/guru99u2/torch/install/lib/lua/5.2/libpaths.so:未定义符号:luaL_setfuncs 堆栈回溯: [C]:在 0x00450240 [C]:在函数“要求”中 /home/guru99u2/torch/install/share/lua/5.2/paths/init.lua:1:在主块中 [C]:在函数“要求”中 /home/guru99u2/torch/install/share/lua/5.2/torch/init.lua:12:在主块中 [C]:在函数“要求”中 ./neuralconvo.lua:1: 在主块中 [C]:在函数“要求”中 bot.lua:1:在主块中 [C]:在 0x00404d60【问题讨论】:
你确定'/home/guru99u2/torch/install/lib/lua/5.2/'中有lua dll吗?它缺少 lua 函数。所以我们可以责怪 dll。 【参考方案1】:在安装过程中出现问题(或者您没有清理以前的版本),因为您尝试使用为 Lua 5.2 构建的模块以及支持 Lua 5.1 ABI(在本例中为 LuaJIT)的解释器。结果你得到了那个错误undefined symbol: luaL_setfuncs
,因为动态库期望有这个函数,但是加载的解释器没有提供它。
Torch 支持 LuaJIT 和 Lua 5.2,但在切换 Lua 版本时,您需要运行 ./clean.sh
脚本,如 documentation 所示。
【讨论】:
我已经这样做了,但仍然是同样的错误。我需要重新安装 lua 和 torch 吗?如果是,那么正确的安装顺序是什么。我需要先安装什么 lua 5.2 或 torch 或 luajit 以及其余的订单并感谢您的帮助 您是否指定了TORCH_LUA_VERSION
?如果你为 Lua 5.2 配置了它,那么使用 Lua 5.2 来运行你的脚本而不是 LuaJIT。
是的,我完全按照文档“TORCH_LUA_VERSION=LUA52 ./install.sh”做到了这一点——我输入的命令
但是您应该使用 lua52 来运行您的脚本,而不是根据您的错误消息使用的 luajit:luajit: error loading module 'libpaths'...
。以上是关于Lua 抛出错误 luajit: error loading module 'libpaths' from file的主要内容,如果未能解决你的问题,请参考以下文章
LuaJIT版从零开始在 macOS 上配置 Lua 开发环境