class_docstr: This attack was originally proposed by Miyato et al. (2016) and was used for virtual adversarial training.
  
  | Paper link: https://arxiv.org/abs/1507.00677
class_docstr_tok: ["This","attack","was","originally","proposed","by","Miyato","et","al",".","(","2016",")","and","was","used","for","virtual","adversarial","training",".","|","Paper","link",":","https",":","\/\/arxiv.org\/abs\/1507.00677"]
code: def _check_params(self) -> None:
      if not isinstance(self.max_iter, int) or self.max_iter <= 0:
          raise ValueError(
              "The number of iterations must be a positive integer."
          )
  
      if self.eps <= 0:
          raise ValueError("The attack step must be positive.")
  
      if (
          not isinstance(self.finite_diff, float)
          or self.finite_diff <= 0
      ):
          raise ValueError(
              "The finite difference parameter must be a positive float."
          )
  
      if self.batch_size <= 0:
          raise ValueError(
              "The batch size `batch_size` has to be positive."
          )
  
      if not isinstance(self.verbose, bool):
          raise ValueError(
              "The argument `verbose` has to be of type bool."
          )
  
file_path: adversarial-robustness-toolbox/art/attacks/evasion/virtual_adversarial.py
imports: from __future__ import absolute_import, division, print_function, unicode_literals
  import logging
  from typing import Optional, TYPE_CHECKING
  import numpy
  from tqdm.auto import trange
  from art.attacks.attack import EvasionAttack
  from art.config import ART_NUMPY_DTYPE
  from art.estimators.estimator import BaseEstimator
  from art.estimators.classification.classifier import ClassifierMixin
label_desc: Use image node_id 5 for calling the VirtualAdversarialMethod obj's underlying member method code with example usage: obj._check_params() without return types