class_docstr: Implementation of DeepZ to certify neural network robustness. We use the zonotope representation of a datapoint as
  it travels through the network to then verify if it can have its class changed given a certain perturbation.
  
  | Paper link: https://papers.nips.cc/paper/2018/file/f2f446980d8e971ef3da97af089481c3-Paper.pdf
class_docstr_tok: ["Implementation","of","DeepZ","to","certify","neural","network","robustness",".","We","use","the","zonotope","representation","of","a","datapoint","as","it","travels","through","the","network","to","then","verify","if","it","can","have","its","class","changed","given","a","certain","perturbation",".","|","Paper","link",":","https",":","\/\/papers.nips.cc\/paper\/2018\/file\/f2f446980d8e971ef3da97af089481c3-Paper.pdf"]
docstr: :param cent: The datapoint, representing the zonotope center.
  :param bound: The perturbation range for the zonotope.
  :param training_mode: `True` for model set to training mode and `'False` for model set to evaluation mode.
  :param kwargs: Dictionary of framework-specific arguments. This parameter is not currently supported for PyTorch
         and providing it takes no effect.
docstr_tok: [":","param","cent",":","The","datapoint",",","representing","the","zonotope","center",".",":","param","bound",":","The","perturbation","range","for","the","zonotope",".",":","param","training_mode",":","`","True","`","for","model","set","to","training","mode","and","`","'False","`","for","model","set","to","evaluation","mode",".",":","param","kwargs",":","Dictionary","of","framework-specific","arguments",".","This","parameter","is","not","currently","supported","for","PyTorch","and","providing","it","takes","no","effect","."]
code: def predict_zonotopes(  # pylint: disable=W0613
      self,
      cent: np.ndarray,
      bound: float,
      training_mode: bool = True,
      **kwargs,
  ) -> Tuple[List[np.ndarray], List[np.ndarray]]:
      """
  
      :param cent: The datapoint, representing the zonotope center.
      :param bound: The perturbation range for the zonotope.
      :param training_mode: `True` for model set to training mode and `'False` for model set to evaluation mode.
      :param kwargs: Dictionary of framework-specific arguments. This parameter is not currently supported for PyTorch
             and providing it takes no effect.
      """
      x_preprocessed, _ = self._apply_preprocessing(
          cent, y=None, fit=False
      )
      self._model.train(mode=training_mode)
  
      bias_results_list = []
      eps_results_list = []
  
      for sample in x_preprocessed:
          if self.concrete_to_zonotope is None:
              if sys.version_info >= (3, 8):
                  eps_bound = (
                      np.eye(math.prod(self.input_shape)) * bound
                  )
              else:
                  eps_bound = (
                      np.eye(
                          reduce(lambda x, y: x * y, self.input_shape)
                      )
                      * bound
                  )
  
              processed_sample, eps_bound = self.pre_process(
                  cent=np.copy(sample), eps=eps_bound
              )
              processed_sample = np.expand_dims(
                  processed_sample, axis=0
              )
          else:
              processed_sample, eps_bound = self.concrete_to_zonotope(
                  sample, bound
              )
  
          bias, eps = self.model.forward(
              eps=eps_bound, cent=processed_sample
          )
          bias = bias.detach().cpu().numpy()
          eps = eps.detach().cpu().numpy()
  
          bias_results_list.append(np.expand_dims(bias, axis=0))
          eps_results_list.append(eps)
  
      return bias_results_list, eps_results_list
  
imports: from typing import List, Optional, Tuple, Union, Callable, Any, TYPE_CHECKING
  import logging
  import math
  import warnings
  import sys
  import numpy
  import torch
  from art.estimators.certification.deep_z.deep_z import ZonoConv, ZonoDenseLayer, ZonoReLU, ZonoBounds
  from art.estimators.classification.pytorch import PyTorchClassifier
label_desc: Use image node_id 2 for calling the PytorchDeepZ obj's underlying member method code with example usage: obj.predict_zonotopes(cent, bound, training_mode) and returns: bias_results_list,  eps_results_list