Based on this plot below, I think SSD predicts the classes and bounding boxes of anchor boxes (based on the , so I expect the anchor boxes generated by `multibox_prior`

should be explicitly passed into `cls_predictor`

and `bbox_predictor`

.

However, in `blk_forward`

, only the feature map `Y`

are passed in:

```
def blk_forward(X, blk, size, ratio, cls_predictor, bbox_predictor):
Y = blk(X)
anchors = d2l.multibox_prior(Y, sizes=size, ratios=ratio)
cls_preds = cls_predictor(Y)
bbox_preds = bbox_predictor(Y)
return (Y, anchors, cls_preds, bbox_preds)
```

So, **the SSD model forward propogation outputs classes & labels solely based on feature maps. The anchor boxes are only used during the loss evaluation**. Is this statement correct?

Thanks for any correction & thoughts!

in def multibox_prior(data, sizes, ratios):… , sizes[0] should change to size_tensor[0], this can improve speed!

Hi markchangliu,

the cls_predictor() in function blk_forward, is actually a network, look carefully at class TinySSD:

at the forward method:

`for i in range(5):

```
# Here `getattr(self, 'blk_%d' % i)` accesses `self.blk_i`
X, anchors[i], cls_preds[i], bbox_preds[i] = blk_forward(
X, getattr(self, f'blk_{i}'), sizes[i], ratios[i],
getattr(self, f'cls_{i}'), getattr(self, f'bbox_{i}'))`
```

The cls_predictor is actually a network, not the function built in this book, I think you can re-implement it, and then change the name, to make it clearer