code: def argscope(layers, **kwargs):
      
      if not isinstance(layers, list):
          layers = [layers]
  
      # def _check_args_exist(l):
      #     args = inspect.getargspec(l).args
      #     for k, v in six.iteritems(kwargs):
      #         assert k in args, "No argument {} in {}".format(k, l.__name__)
  
      for l in layers:
          assert hasattr(l, 'symbolic_function'), "{} is not a registered layer".format(l.__name__)
          # _check_args_exist(l.symbolic_function)
  
      new_scope = copy.copy(get_arg_scope())
      for l in layers:
          new_scope[l.__name__].update(kwargs)
      _ArgScopeStack.append(new_scope)
      yield
      del _ArgScopeStack[-1]
docs: Args:
          layers (list or layer): layer or list of layers to apply the arguments.
  
      Returns:
          a context where all appearance of these layer will by default have the
          arguments specified by kwargs.
  
      Example:
          .. code-block:: python
  
              with argscope(Conv2D, kernel_shape=3, nl=tf.nn.relu, out_channel=32):
                  x = Conv2D('conv0', x)
                  x = Conv2D('conv1', x)
                  x = Conv2D('conv2', x, out_channel=64)  # override argscope