class_docstr: Outputs object detection proposals by applying estimated bounding-box
  transformations to a set of regular boxes (called "anchors").
class_docstr_tok: ["Outputs","object","detection","proposals","by","applying","estimated","bounding-box","transformations","to","a","set","of","regular","boxes","(","called","``","anchors","''",")","."]
code: def setup(self, bottom, top):
      # parse the layer parameter string, which must be valid YAML
      layer_params = yaml.load(self.param_str_)
  
      self._feat_stride = layer_params["feat_stride"]
      anchor_scales = layer_params.get("scales", (8, 16, 32))
      self._anchors = generate_anchors(scales=np.array(anchor_scales))
      self._num_anchors = self._anchors.shape[0]
      self.phase = "TEST"
  
file_path: CNTK/Examples/Image/Detection/utils/caffe_layers/proposal_layer.py
imports: import numpy
  import yaml
  from utils.caffe_layers.default_config import cfg
  from utils.rpn.generate_anchors import generate_anchors
  from utils.caffe_layers.bbox_transform import bbox_transform_inv, clip_boxes
  from utils.nms_wrapper import nms
label_desc: Use image node_id 2 for calling the ProposalLayer obj's underlying member method code with example usage: obj.setup(bottom, top) without return types