class_docstr: Implementation of the following white-box attacks related to PE malware crafting:
      1) Append based attacks (example paper link: https://arxiv.org/abs/1810.08280)
      2) Section insertion attacks (example paper link: https://arxiv.org/abs/2008.07125)
      3) Slack manipulation attacks (example paper link: https://arxiv.org/abs/1810.08280)
      4) DOS Header Attacks (example paper link: https://arxiv.org/abs/1901.03583)
class_docstr_tok: ["Implementation","of","the","following","white-box","attacks","related","to","PE","malware","crafting",":","1",")","Append","based","attacks","(","example","paper","link",":","https",":","\/\/arxiv.org\/abs\/1810.08280",")","2",")","Section","insertion","attacks","(","example","paper","link",":","https",":","\/\/arxiv.org\/abs\/2008.07125",")","3",")","Slack","manipulation","attacks","(","example","paper","link",":","https",":","\/\/arxiv.org\/abs\/1810.08280",")","4",")","DOS","Header","Attacks","(","example","paper","link",":","https",":","\/\/arxiv.org\/abs\/1901.03583",")"]
code: def _check_params(self) -> None:
      if not isinstance(self.param_dic, dict):
          raise ValueError(
              "A param_dic should be provided with the following keys/value pairs: "
              "'maxlen': the input size to the MalConv model"
              "'input_dim': the number of discrete values. Normally 257."
              "'embedding_size': size of the embedding layer. Normally 8."
          )
  
      if not isinstance(self.embedding_weights, np.ndarray):
          raise ValueError(
              "The weights for the embedding layer should be given as a numpy array."
          )
  
      if not isinstance(self.l_0, (int, float)) or self.l_0 < 0:
          raise ValueError(
              "The l0 bound should be greater or equal to 0. Further, it should be provided as an "
              "integer specifying the total number of features to perturb, or a a float representing "
              "the fraction of the total number of features of the original file we can perturb."
          )
  
      if not isinstance(self.l_r, (int, float)) or self.l_r < 0:
          raise ValueError(
              "The learning rate should be a float or integer greater than zero."
          )
  
      if not isinstance(self.use_sign, bool):
          raise ValueError(
              "Whether to use the sign of the gradient should be a True/False bool."
          )
  
      if (
          not isinstance(self.num_of_iterations, int)
          or self.num_of_iterations < 0
      ):
          raise ValueError(
              "The number of iterations must be an integer greater than zero."
          )
  
      if not isinstance(self.verbose, bool):
          raise ValueError(
              "The verbosity level should be a True/False bool."
          )
  
imports: import json
  import random
  import logging
  from typing import Optional, Union, Tuple, List, Dict, TYPE_CHECKING
  from tqdm.auto import trange
  import numpy
  from art.estimators.estimator import BaseEstimator, NeuralNetworkMixin
  from art.estimators.classification.classifier import ClassifierMixin
  from art.attacks.attack import EvasionAttack
label_desc: Use image node_id 2 for calling the MalwareGDTensorFlow obj's underlying member method code with example usage: obj._check_params() without return types