def main():
model = L.Classifier(MLP())
if GPU >= 0:
chainer.cuda.get_device(GPU).use() # Make a specified GPU current
model.to_gpu() # Copy the model to the GPU
# Setup an optimizer
optimizer = chainer.optimizers.Adam()
optimizer.setup(model)
print "Set Optimizer - OK"
# Load the MNIST dataset
train, test = chainer.datasets.get_mnist(ndim=3)
train_iter = chainer.iterators.SerialIterator(train, BACTHSIZE)
test_iter = chainer.iterators.SerialIterator(test, BACTHSIZE,
repeat=False, shuffle=False)
print "Set MNIST - OK"
# Set up a trainer
updater = training.StandardUpdater(train_iter, optimizer, device=GPU)
trainer = training.Trainer(updater, (EPOCH, 'epoch'), out=OUT)
trainer.extend(extensions.Evaluator(test_iter, model, device=GPU))
trainer.extend(extensions.LogReport())
trainer.extend(extensions.PrintReport(
['epoch', 'main/loss', 'validation/main/loss',
'main/accuracy', 'validation/main/accuracy', 'elapsed_time']))
# Print a progress bar to stdout
trainer.extend(extensions.ProgressBar())
print "Set Option - OK"
if RESUME:
# Resume from a snapshot
chainer.serializers.load_npz(RESUME, trainer)
# Run the training
trainer.run()
model.to_cpu()
chainer.serializers.save_npz("after.model", model)
cPickle.dump(model,open('model', 'wb'), -1)
if __name__ == '__main__':
main()