Версия Lua в ZeroBraneStudio против Torch

Я использую ZeroBrane Studio в качестве IDE для глубокого обучения. Я понял, что модели, которые я сохраняю при программировании в среде IDE (используя Lua 5.1 в качестве интерпретатора), плохо загружаются при выполнении той же загрузки из Torch7. То же самое происходит, когда вы изучаете torch (./th code.lua) и затем пытаетесь загрузить их в IDE. Я получаю что-то вроде:

/opt/zbstudio/bin/linux/x64/lua: /home/dg/torch/install/share/lua/5.1/torch/File.lua:294: unknown object

Кто-нибудь знает, как проверить версию lua, которую использует факел? Любая идея о том, как обойти это?

Спасибо!

обновление: кажется, что я действительно использую одну и ту же версию Lua (5.1) как в Torch, так и в ZeroBrane. Я все еще получаю различное поведение (один успешно, а другой сбой) при прохождении через torch.load().


person David Geronimo    schedule 30.10.2015    source источник
comment
Обычно версия хранится в _VERSION.   -  person hjpotter92    schedule 30.10.2015
comment
Можем ли мы увидеть строку 294 и несколько вокруг нее?   -  person warspyking    schedule 31.10.2015
comment
@warspyking github.com/torch/torch7/blob/master/File. луа#L294   -  person siffiejoe    schedule 31.10.2015
comment
@warspyking Ошибка возникает в строке, в которой я вызываю torch.load(modelPath), затем проходит через несколько /home/dgeronimo/torch/install/share/lua/5.1/torch/File.lua:272: в функции 'readObject ', наконец, бросая эту ошибку. Вроде все на своих местах и ​​при запуске из командной строки загружает правильно, а внутри ZeroBrane не выполняется.   -  person David Geronimo    schedule 02.11.2015
comment
@DavidGeronimo: Можете ли вы запустить file /opt/zbstudio/bin/linux/x64/lua и file <path/to/torch/interpreter> и убедиться, что оба являются 64-битными исполняемыми файлами?   -  person siffiejoe    schedule 02.11.2015


Ответы (3)


Чтобы проверить версию Lua, на которой работает все, вы обычно печатаете _VERSION. Это глобальная переменная, в которой хранится версия Lua (если вы, конечно, не перезапишете ее).

print(_VERSION)

Если это недоступно по какой-либо причине, они могут указать свою версию на своем сайте (?)

person warspyking    schedule 30.10.2015

Большинство инструментов командной строки в Linux понимают переключатель командной строки -v (для «версии»). Так же как и Lua и LuaJIT.

Чтобы выяснить, какой интерпретатор запускает конкретный скрипт, вы можете просмотреть таблицу arg на предмет наименьшего (обычно отрицательного) индекса:

local exe, i = arg[ 0 ], -1
while arg[ i ] do
  exe, i = arg[ i ], i-1
end
print( exe )

Или (в Linux) вы можете заглянуть в файловую систему /proc во время работы вашего скрипта:

ls -l /proc/4425/exe

(замените 4425 реальным идентификатором процесса).

Судя по сообщению об ошибке, интерпретатор, используемый в ZeroBrane Studio, в вашем случае кажется /opt/zbstudio/bin/linux/x64/lua.

person siffiejoe    schedule 30.10.2015

@siffiejoe: спасибо, что задали вопрос о версиях, это дало мне правильные направления для изучения.

/opt/zbstudio/bin/linux/x64/lua version is LuaJIT 2.0.2
"lua" command alone points to /usr/bin/lua, and it is Lua 5.1.5
~/torch/install/share/lua/5.1 seemed to contain Lua 5.1
~/torch/install/bin/luajit is 2.1.0-alpha

Итак, после того, как я понял, что терминал "th" использует LuaJit 2.1.0, все, что мне нужно было сделать, это создать user.lua в ZeroBrane и добавить строку "path.lua = "~/torch/install/bin/luajit". Теперь ZB использует тот же интерпретатор luajit, что и th.

Спасибо всем за ваши предложения.

person David Geronimo    schedule 03.11.2015