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 __init__(
      self, arg1, arg2, arg3, layer_config, name="ProposalLayer"
  ):
      super(ProposalLayer, self).__init__(
          [arg1, arg2, arg3], attributes=layer_config, name=name
      )
  
      self._layer_config = layer_config
      self._feat_stride = (
          16
          if "feat_stride" not in layer_config
          else layer_config["feat_stride"]
      )
      anchor_scales = (
          [8, 16, 32]
          if "scales" not in layer_config
          else layer_config["scales"]
      )
  
      # parse the layer parameter string, which must be valid YAML
      self._anchors = generate_anchors(scales=np.array(anchor_scales))
      self._num_anchors = self._anchors.shape[0]
  
      if DEBUG:
          print("feat_stride: {}".format(self._feat_stride))
          print("anchors:")
          print(self._anchors)
  
file_path: CNTK/Examples/Image/Detection/utils/rpn/proposal_layer.py
imports: from cntk import output_variable, FreeDimension
  from cntk.ops.functions import UserFunction
  import numpy
  import yaml
  from utils.rpn.generate_anchors import generate_anchors
  from utils.rpn.bbox_transform import bbox_transform_inv, clip_boxes
  from utils.nms_wrapper import nms
label_desc: Use image node_id 1 to create a new ProposalLayer object from inherited base classes: UserFunction with example: obj = ProposalLayer(arg1, arg2, arg3, layer_config, name)