在Torch中保存lstm语言模型

我正在使用lstm语言模型,代码来自https://github.com/wojzaremba/lstm/blob/master/main.lua

我想要在训练结束后保存模型,以备后续使用。我在训练结束的位置加入了以下代码:

torch.save(params.model_file, model)

看起来这行代码非常成功地保存了模型。但是,当我尝试加载该模型并进行测试时,得到的困惑度非常大。仅仅为了测试,我运行了一个小实例进行训练,结果得到的测试集困惑度为134,然后保存了模型。然后我加载了保存的模型,并在相同的测试集上使用完全相同的测试方法(函数run_test),但是我得到了一个巨大的困惑度,达到了71675.134(即使使用随机权重的结果也比这个要低得多!)。我尝试保存和加载只有权重,将它们转换为float()之后再保存,或者将它们保存为cudaTensors,但是我得到的结果都是一样的。

下面是在保存了整个模型后加载并测试的代码;我只修改了原始main.lua中的主函数:

local function main()
    g_init_gpu(arg)
    print('从文件中加载模型' .. params.model_file)
    model=torch.load(params.model_file)
    state_test =  {data=transfer_data(ptb.testdataset(params.batch_size))}
    reset_state(state_test)
    run_test()
end
点赞