SINGA-300 - Add residual networks for imagenet classification fix bugs for using CPU
Project: http://git-wip-us.apache.org/repos/asf/incubator-singa/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-singa/commit/8ddfab5f Tree: http://git-wip-us.apache.org/repos/asf/incubator-singa/tree/8ddfab5f Diff: http://git-wip-us.apache.org/repos/asf/incubator-singa/diff/8ddfab5f Branch: refs/heads/master Commit: 8ddfab5fa394acc0fac8f14c4ae7d2576d7460c9 Parents: 026db89 Author: Wei Wang <[email protected]> Authored: Fri Feb 17 13:26:46 2017 +0800 Committer: Wei Wang <[email protected]> Committed: Fri Feb 17 13:26:46 2017 +0800 ---------------------------------------------------------------------- examples/imagenet/resnet/README.md | 2 +- examples/imagenet/resnet/model.py | 5 ++++- examples/imagenet/resnet/serve.py | 15 ++++++++++----- 3 files changed, 15 insertions(+), 7 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-singa/blob/8ddfab5f/examples/imagenet/resnet/README.md ---------------------------------------------------------------------- diff --git a/examples/imagenet/resnet/README.md b/examples/imagenet/resnet/README.md index 4d5f231..4a0f4da 100644 --- a/examples/imagenet/resnet/README.md +++ b/examples/imagenet/resnet/README.md @@ -26,7 +26,7 @@ In this example, we convert Residual Networks trained on [Torch](https://github. * Example # use cpu - $ python serve.py -C --parameter_file resnet-18.pickle --model resnet --depth 18 & + $ python serve.py --use_cpu --parameter_file resnet-18.pickle --model resnet --depth 18 & # use gpu $ python serve.py --parameter_file resnet-18.pickle --model resnet --depth 18 & http://git-wip-us.apache.org/repos/asf/incubator-singa/blob/8ddfab5f/examples/imagenet/resnet/model.py ---------------------------------------------------------------------- diff --git a/examples/imagenet/resnet/model.py b/examples/imagenet/resnet/model.py index 34dfd9f..bf90da3 100644 --- a/examples/imagenet/resnet/model.py +++ b/examples/imagenet/resnet/model.py @@ -21,6 +21,7 @@ from singa.layer import Conv2D, Activation, MaxPooling2D, AvgPooling2D,\ Split, Merge, Flatten, Dense, BatchNormalization, Softmax from singa import net as ffnet from singa import initializer +from singa import layer ffnet.verbose=True @@ -257,7 +258,9 @@ def create_wide_resnet(depth=50): return net -def create_net(name, depth): +def create_net(name, depth, use_cpu): + if use_cpu: + layer.engine = 'singacpp' if name == 'resnet': return create_resnet(depth) elif name == 'wrn': http://git-wip-us.apache.org/repos/asf/incubator-singa/blob/8ddfab5f/examples/imagenet/resnet/serve.py ---------------------------------------------------------------------- diff --git a/examples/imagenet/resnet/serve.py b/examples/imagenet/resnet/serve.py index aea7b18..ba5adb1 100644 --- a/examples/imagenet/resnet/serve.py +++ b/examples/imagenet/resnet/serve.py @@ -117,8 +117,8 @@ def main(): # Setup argument parser parser = ArgumentParser(description="Wide residual network") - parser.add_argument("-p", "--port", default=9999, help="listen port") - parser.add_argument("-c", "--use_cpu", action="store_true", + parser.add_argument("--port", default=9999, help="listen port") + parser.add_argument("--use_cpu", action="store_true", help="If set, load models onto CPU devices") parser.add_argument("--parameter_file", default="wrn-50-2.pickle") parser.add_argument("--model", choices = ['resnet', 'wrn', 'preact', 'addbn'], default='wrn') @@ -131,9 +131,14 @@ def main(): # start to train agent = Agent(port) - net = model.create_net(args.model, args.depth) - dev = device.create_cuda_gpu() - net.to_device(dev) + net = model.create_net(args.model, args.depth, args.use_cpu) + if args.use_cpu: + print 'Using CPU' + dev = device.get_default_device() + else: + print 'Using GPU' + dev = device.create_cuda_gpu() + net.to_device(dev) model.init_params(net, args.parameter_file) print 'Finish loading models'
