在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
转载请注明出处: http://www.cnblogs.com/darkknightzh/p/5754872.html 前段时间用终端和zerobrane运行torch的lua程序。zerobrane主要用于调试(虽说功能简单,但是还算可以用吧)。终端直接使用th xx.lua(torch安装的是luajit),zerobrane直接点击两个右箭头的“Execute the current project”。某天运行程序时,突然提示: File.lua:301: Failed to load function from bytecode: (binary): cannot load incompatible bytecode [C]: in function 'error' ...program/torch/install/share/lua/5.1/torch/File.lua:301: in function 'readObject' ...program/torch/install/share/lua/5.1/torch/File.lua:369: in function 'readObject' ...program/torch/install/share/lua/5.1/torch/File.lua:353: in function 'readObject' ...program/torch/install/share/lua/5.1/torch/File.lua:409: in function 'load' 程序崩溃的地方是调用‘dofile’,在其内部出错的地方是load函数(之前有save成.t7文件,判断该文件存在,则直接load,否则重新生成该文件)。 当时很奇怪。后来发现: 1. 如果使用zerobrane运行程序进行save操作,再使用zerobrane运行程序,进行load操作,则不会崩溃。 2. 如果删除该.t7文件,使用终端运行该程序,save成t7文件,再使用终端运行程序,此时load该t7文件,也不会出错。 3. 如果使用zerobrane进行save,再使用终端load文件,或者使用终端save,再使用zerobrane进行load,则程序都会在load处崩溃。 个人猜测,原因应该是终端使用th命令和zerobrane直接运行文件所使用的解释器(interpreter)不同导致的。但是更改了一下,暂时没有成功。。。额,以后再说吧。。。 目前解决方法就是:单一使用zerobrane或者终端的th来运行程序。不要交替的使用。 ps: 1. 终端中运行th,信息如下: 运行lua,信息如下: 运行luajit,信息如下: 2. 后来测试过,如果save比较简单的数据,使用另一种方式load的话,能成功载入数据;如果save比较复杂的东西,比如有函数之类的,貌似就出问题了(此处不太确定)。 |
请发表评论