diff --git a/nnvm/python/nnvm/frontend/darknet.py b/nnvm/python/nnvm/frontend/darknet.py
index bf3a16cdb23e19456b7297436f5aee456b9bf535..4da2e90bca42b5a5ea11a0dfc7371ad13c5857b1 100644
--- a/nnvm/python/nnvm/frontend/darknet.py
+++ b/nnvm/python/nnvm/frontend/darknet.py
@@ -267,6 +267,13 @@ def _darknet_upsampling(inputs, attrs):
     new_attrs['scale'] = attrs.get('scale', 1)
     return _darknet_get_nnvm_op(op_name)(*inputs, **new_attrs), None
 
+def _darknet_l2normalize(inputs, attrs):
+    """Process the l2 normalization operation."""
+    op_name, new_attrs = 'l2_normalize', {}
+    new_attrs['eps'] = attrs.get('eps', 0)
+    new_attrs['axis'] = attrs.get('axis', 1)
+    return _darknet_get_nnvm_op(op_name)(*inputs, **new_attrs), None
+
 def _darknet_softmax_output(inputs, attrs):
     """Process the softmax operation."""
     temperature = attrs.get('temperature', 1)
@@ -370,6 +377,7 @@ _DARKNET_CONVERT_MAP = {
     LAYERTYPE.REGION          : _darknet_region,
     LAYERTYPE.SHORTCUT        : _darknet_shortcut,
     LAYERTYPE.UPSAMPLE        : _darknet_upsampling,
+    LAYERTYPE.L2NORM          : _darknet_l2normalize,
     LAYERTYPE.YOLO            : _darknet_yolo,
     LAYERTYPE.DETECTION       : _darknet_op_not_support,
     LAYERTYPE.CROP            : _darknet_op_not_support,
@@ -630,6 +638,10 @@ class GraphProto(object):
 
         elif LAYERTYPE.UPSAMPLE == layer.type:
             attr.update({'scale' : layer.stride})
+
+        elif LAYERTYPE.L2NORM == layer.type:
+            pass
+
         else:
             err = "Darknet layer type {} is not supported in nnvm.".format(layer.type)
             raise NotImplementedError(err)
diff --git a/nnvm/python/nnvm/testing/darknet.py b/nnvm/python/nnvm/testing/darknet.py
index d4d33a6949f31135cc30cc8947bab8d1bf0e8914..328ad2ae6a10fde506c9a8bf7f6d1d5a836db816 100644
--- a/nnvm/python/nnvm/testing/darknet.py
+++ b/nnvm/python/nnvm/testing/darknet.py
@@ -512,6 +512,7 @@ layer make_crnn_layer(int batch, int h, int w, int c, int hidden_filters, int ou
 layer make_lstm_layer(int batch, int inputs, int outputs, int steps, int batch_normalize, int adam);
 layer make_gru_layer(int batch, int inputs, int outputs, int steps, int batch_normalize, int adam);
 layer make_upsample_layer(int batch, int w, int h, int c, int stride);
+layer make_l2norm_layer(int batch, int inputs);
 void free_network(network *net);
 """
                    )
diff --git a/nnvm/tests/python/frontend/darknet/test_forward.py b/nnvm/tests/python/frontend/darknet/test_forward.py
index f836ca477ddad4d3be8eb8fe99a814b2e51f742f..1f5e89c6e4d5656beff771043b8cc93115b471ee 100644
--- a/nnvm/tests/python/frontend/darknet/test_forward.py
+++ b/nnvm/tests/python/frontend/darknet/test_forward.py
@@ -107,7 +107,7 @@ def test_forward(net, build_dtype='float32'):
                 out.insert(0, attributes)
                 out.insert(0, _read_memory_buffer((layer.total*2, ), layer.biases))
                 out.insert(0, _read_memory_buffer((layer.n, ), layer.mask, dtype='int32'))
-                layer_ou tshape = (layer.batch, layer.out_c,
+                layer_outshape = (layer.batch, layer.out_c,
                                   layer.out_h, layer.out_w)
                 out.insert(0, _read_memory_buffer(layer_outshape, layer.output))
             elif i == net.n-1:
@@ -361,6 +361,19 @@ def test_forward_upsample():
     test_forward(net)
     LIB.free_network(net)
 
+def test_forward_l2normalize():
+    '''test l2 normalization layer'''
+    net = LIB.make_network(1)
+    layer = LIB.make_l2norm_layer(1, 224*224*3)
+    layer.c = layer.out_c = 3
+    layer.h = layer.out_h = 224
+    layer.w = layer.out_w = 224
+    net.layers[0] = layer
+    net.w = net.h = 224
+    LIB.resize_network(net, 224, 224)
+    test_forward(net)
+    LIB.free_network(net)
+
 def test_forward_elu():
     '''test elu activation layer'''
     net = LIB.make_network(1)
@@ -520,6 +533,7 @@ if __name__ == '__main__':
     test_forward_region()
     test_forward_yolo_op()
     test_forward_upsample()
+    test_forward_l2normalize()
     test_forward_elu()
     test_forward_rnn()
     test_forward_crnn()