code: def _vgg_ssd(self):
      self.conv3_norm = self._l2_norm_scale(self.conv3, init_scale=10.0)
      self.conv4_norm = self._l2_norm_scale(self.conv4, init_scale=8.0)
      self.conv5_norm = self._l2_norm_scale(self.conv5, init_scale=5.0)
  
      def permute_and_reshape(input, last_dim):
          trans = fluid.layers.transpose(input, perm=[0, 2, 3, 1])
          compile_shape = [
              trans.shape[0],
              np.prod(trans.shape[1:]) // last_dim,
              last_dim,
          ]
          run_shape = fluid.layers.assign(
              np.array([0, -1, last_dim]).astype("int32")
          )
          return fluid.layers.reshape(
              trans, shape=compile_shape, actual_shape=run_shape
          )
  
      locs, confs = [], []
      boxes, vars = [], []
      b_attr = ParamAttr(learning_rate=2.0, regularizer=L2Decay(0.0))
  
      # conv3
      mbox_loc = fluid.layers.conv2d(
          self.conv3_norm, 4, 3, 1, 1, bias_attr=b_attr
      )
      loc = permute_and_reshape(mbox_loc, 4)
      mbox_conf = fluid.layers.conv2d(
          self.conv3_norm, 4, 3, 1, 1, bias_attr=b_attr
      )
      conf1, conf3 = fluid.layers.split(
          mbox_conf, num_or_sections=[1, 3], dim=1
      )
      conf3_maxin = fluid.layers.reduce_max(conf3, dim=1, keep_dim=True)
      conf = fluid.layers.concat([conf1, conf3_maxin], axis=1)
      conf = permute_and_reshape(conf, 2)
      box, var = fluid.layers.prior_box(
          self.conv3_norm,
          self.image,
          min_sizes=[16.0],
          steps=[4, 4],
          aspect_ratios=[1.0],
          clip=False,
          flip=True,
          offset=0.5,
      )
      box = fluid.layers.reshape(box, shape=[-1, 4])
      var = fluid.layers.reshape(var, shape=[-1, 4])
  
      locs.append(loc)
      confs.append(conf)
      boxes.append(box)
      vars.append(var)
  
      min_sizes = [32.0, 64.0, 128.0, 256.0, 512.0]
      steps = [8.0, 16.0, 32.0, 64.0, 128.0]
      inputs = [
          self.conv4_norm,
          self.conv5_norm,
          self.conv6,
          self.conv7,
          self.conv8,
      ]
      for i, input in enumerate(inputs):
          mbox_loc = fluid.layers.conv2d(
              input, 4, 3, 1, 1, bias_attr=b_attr
          )
          loc = permute_and_reshape(mbox_loc, 4)
  
          mbox_conf = fluid.layers.conv2d(
              input, 2, 3, 1, 1, bias_attr=b_attr
          )
          conf = permute_and_reshape(mbox_conf, 2)
          box, var = fluid.layers.prior_box(
              input,
              self.image,
              min_sizes=[min_sizes[i]],
              steps=[steps[i]] * 2,
              aspect_ratios=[1.0],
              clip=False,
              flip=True,
              offset=0.5,
          )
          box = fluid.layers.reshape(box, shape=[-1, 4])
          var = fluid.layers.reshape(var, shape=[-1, 4])
  
          locs.append(loc)
          confs.append(conf)
          boxes.append(box)
          vars.append(var)
  
      self.face_mbox_loc = fluid.layers.concat(locs, axis=1)
      self.face_mbox_conf = fluid.layers.concat(confs, axis=1)
      self.prior_boxes = fluid.layers.concat(boxes)
      self.box_vars = fluid.layers.concat(vars)
  
imports: from __future__ import absolute_import
  from __future__ import division
  from __future__ import print_function
  import numpy
  import six
  import paddle.fluid
  from paddle.fluid.param_attr import ParamAttr
  from paddle.fluid.initializer import Xavier
  from paddle.fluid.initializer import Constant
  from paddle.fluid.initializer import Bilinear
  from paddle.fluid.regularizer import L2Decay
label_desc: Use image node_id 9 for calling the PyramidBox obj's underlying member method code with example usage: obj._vgg_ssd() and returns: fluid