SINGA-300 - Add residual networks for imagenet classification

fix bugs for using CPU
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 @@
 * 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 &
 
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 @@
         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 @@
     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':
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 @@
         # 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 @@
         # 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'