我在https://github.com/wojzaremba/lstm/blob/master/main.lua中使用 lstm 语言模型
我想在训练结束时保存模型以备后用。我在培训结束时添加了以下行
torch.save(params.model_file, model)
这似乎成功地保存了模型。但是,当我尝试加载该模型并对其进行测试时,我感到非常困惑。只是为了测试,我跑了一个小训练实例,导致测试集困惑度为 134,然后保存模型。然后我加载了保存的模型并在同一个测试集上应用了完全相同的测试方法(函数 run_test),但我得到了 71675.134 的巨大困惑(即使使用随机权重也比这低得多!)。我尝试只保存和加载权重,在保存之前将它们转换为 float(),或者将它们保存为 cudaTensors,所有这些都给了我相同的结果。
这是保存整个模型后加载和测试的代码;我只修改了原始 main.lua 中的 main 方法:
local function main()
g_init_gpu(arg)
print('loading model from file ' .. 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