diff --git a/lib/roi_data_layer/layer.py b/lib/roi_data_layer/layer.py
index 16793f7bef63abcecafa3d80a3c473ed772b03fb..850eecdad5df3be868f0ca6f03383edcb6cca85f 100644
--- a/lib/roi_data_layer/layer.py
+++ b/lib/roi_data_layer/layer.py
@@ -71,6 +71,7 @@ class RoIDataLayer(caffe.Layer):
             self._prefetch_process = None
             self._prefetch_queue = queues.SimpleQueue()
 
+        # parse the layer parameter string, which must be valid YAML
         layer_params = yaml.load(self.param_str_)
 
         self._num_classes = layer_params['num_classes']
@@ -82,15 +83,25 @@ class RoIDataLayer(caffe.Layer):
             'bbox_targets': 3,
             'bbox_loss_weights': 4}
 
-        # data
-        top[0].reshape(1, 3, 1, 1)
-        # rois
+        # data blob: holds a batch of N images, each with 3 channels
+        # The height and width (100 x 100) are dummy values
+        top[0].reshape(1, 3, 100, 100)
+
+        # rois blob: holds R regions of interest, each is a 5-tuple
+        # (n, x1, y1, x2, y2) specifying an image batch index n and a
+        # rectangle (x1, y1, x2, y2)
         top[1].reshape(1, 5)
-        # labels
+
+        # labels blob: R categorical labels in [0, ..., K] for K foreground
+        # classes plus background
         top[2].reshape(1)
-        # bbox_targets
+
+        # bbox_targets blob: R bounding-box regression targets with 4 targets
+        # per class
         top[3].reshape(1, self._num_classes * 4)
-        # bbox_loss_weights
+
+        # bbox_loss_weights blob: At most 4 targets per roi are active; this
+        # binary vector sepcifies the subset of active targets
         top[4].reshape(1, self._num_classes * 4)
 
     def forward(self, bottom, top):