code: def collect_params(self, select=None):
          
          # We need to check here because blocks inside containers are not supported.
          self._check_container_with_block()
          ret = ParameterDict(self._params.prefix)
          if not select:
              ret.update(self.params)
          else:
              pattern = re.compile(select)
              ret.update({name:value for name, value in self.params.items() if pattern.match(name)})
          for cld in self._children.values():
              ret.update(cld.collect_params(select=select))
          return ret
docs: Returns a :py:class:`ParameterDict` containing this :py:class:`Block` and all of its
          children's Parameters(default), also can returns the select :py:class:`ParameterDict`
          which match some given regular expressions.
  
          For example, collect the specified parameters in ['conv1_weight', 'conv1_bias', 'fc_weight',
          'fc_bias']::
  
              model.collect_params('conv1_weight|conv1_bias|fc_weight|fc_bias')
  
          or collect all parameters whose names end with 'weight' or 'bias', this can be done
          using regular expressions::
  
              model.collect_params('.*weight|.*bias')
  
          Parameters
          ----------
          select : str
              regular expressions
  
          Returns
          -------
          The selected :py:class:`ParameterDict`