https://github.com/wojzaremba/lstm/blob/master/main.luaで lstm 言語モデルを使用しています
後で使用するために、トレーニングの最後にモデルを保存したいと考えています。トレーニングの最後に次の行を追加しました
torch.save(params.model_file, model)
モデルを正常に保存したようです。ただし、そのモデルをロードしてテストしようとすると、非常に困惑します。テストのためだけに、小さなトレーニング インスタンスを実行したところ、テスト セットのパープレキシティは 134 になり、モデルを保存しました。次に、保存したモデルをロードし、まったく同じテスト方法 (関数 run_test) を同じテスト セットに適用しましたが、71675.134 という大きな問題が発生しました (ランダムな重みを使用しても、問題はそれよりもはるかに少なくなります!)。重みのみを保存してロードし、保存する前にそれらを float() に変換するか、cudaTensor として保存しようとしましたが、すべて同じ結果が得られました。
モデル全体を保存した後の読み込みとテストのコードを次に示します。元の 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