From c87f1d7d481c393c38fe0fbee7d868bb8d495ca5 Mon Sep 17 00:00:00 2001 From: ahmedameen Date: Mon, 22 Aug 2016 10:09:00 +0300 Subject: [PATCH 1/2] Save/Load optimzer state Adagrad optimzer is an adaptive optimzer and the state should be saved/loaded to continue the training. --- train.lua | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/train.lua b/train.lua index 790df96..1cfdfb1 100644 --- a/train.lua +++ b/train.lua @@ -36,6 +36,8 @@ cmd:option('-model', 'model', 'neural network model') cmd:option('-data', 'data.t7', 'training data') cmd:option('-learningRate', 0.01, 'learning rate') cmd:option('-initweights', '', 'initial weights') +cmd:option('-initstate', '', 'initial optimzer state') + params = cmd:parse(arg) @@ -144,13 +146,20 @@ function trainModel(weights) return {cost}, dw end --- create directory to save weights and videos +-- create directory to save weights, optimzer state and videos lfs.mkdir('weights_' .. params.model) +lfs.mkdir('state_' .. params.model) lfs.mkdir('video_' .. params.model) local total_cost, config, state = 0, { learningRate = params.learningRate }, {} collectgarbage() +if #params.initstate > 0 then + print('Loading optimzer state ' .. params.initstate) + state=torch.load(params.initstate) +end + + for k = 1,params.iter do xlua.progress(k, params.iter) local _, cost = optim.adagrad(trainModel, w, config, state) @@ -161,6 +170,8 @@ for k = 1,params.iter do total_cost = 0 -- save weights torch.save('weights_' .. params.model .. '/' .. k .. '.dat', w:type('torch.FloatTensor')) + torch.save('state_' .. params.model .. '/' .. k .. '.dat', state) + -- visualise performance evalModel(w) end From a9bbe982099bb1fdf025b13d39710320168b4bf9 Mon Sep 17 00:00:00 2001 From: ahmedameen Date: Mon, 22 Aug 2016 10:13:06 +0300 Subject: [PATCH 2/2] Fix Spelling --- train.lua | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/train.lua b/train.lua index 1cfdfb1..da6a72a 100644 --- a/train.lua +++ b/train.lua @@ -36,7 +36,7 @@ cmd:option('-model', 'model', 'neural network model') cmd:option('-data', 'data.t7', 'training data') cmd:option('-learningRate', 0.01, 'learning rate') cmd:option('-initweights', '', 'initial weights') -cmd:option('-initstate', '', 'initial optimzer state') +cmd:option('-initstate', '', 'initial optimizer state') params = cmd:parse(arg) @@ -146,7 +146,7 @@ function trainModel(weights) return {cost}, dw end --- create directory to save weights, optimzer state and videos +-- create directory to save weights, optimizer state and videos lfs.mkdir('weights_' .. params.model) lfs.mkdir('state_' .. params.model) lfs.mkdir('video_' .. params.model) @@ -155,7 +155,7 @@ local total_cost, config, state = 0, { learningRate = params.learningRate }, {} collectgarbage() if #params.initstate > 0 then - print('Loading optimzer state ' .. params.initstate) + print('Loading optimizer state ' .. params.initstate) state=torch.load(params.initstate) end @@ -168,7 +168,7 @@ for k = 1,params.iter do if k % 1000 == 0 then print('Iteration ' .. k .. ', cost: ' .. total_cost / 1000) total_cost = 0 - -- save weights + -- save weights and optimizer state torch.save('weights_' .. params.model .. '/' .. k .. '.dat', w:type('torch.FloatTensor')) torch.save('state_' .. params.model .. '/' .. k .. '.dat', state)