class_docstr: Wrapper around pytorch's convolutional layer.
  We only add the bias to the zeroth element of the zonotope
class_docstr_tok: ["Wrapper","around","pytorch","'s","convolutional","layer",".","We","only","add","the","bias","to","the","zeroth","element","of","the","zonotope"]
docstr: Modification required compared to the normal torch conv layers.
  The bias is added only to the central zonotope term and not the error terms.
  
  :param x: zonotope input to have the bias added.
  :return: zonotope with the bias added to the central (first) term.
docstr_tok: ["Modification","required","compared","to","the","normal","torch","conv","layers",".","The","bias","is","added","only","to","the","central","zonotope","term","and","not","the","error","terms",".",":","param","x",":","zonotope","input","to","have","the","bias","added",".",":","return",":","zonotope","with","the","bias","added","to","the","central","(","first",")","term","."]
code: def zonotope_add(self, x: "torch.Tensor") -> "torch.Tensor":
      """
      Modification required compared to the normal torch conv layers.
      The bias is added only to the central zonotope term and not the error terms.
  
      :param x: zonotope input to have the bias added.
      :return: zonotope with the bias added to the central (first) term.
      """
      # unsqueeze to broadcast along height and width
      bias = torch.unsqueeze(self.bias, dim=-1)
      bias = torch.unsqueeze(bias, dim=-1)
      x[0] = x[0] + bias
      return x
  
imports: from typing import Tuple, Union
  import numpy
  import torch
label_desc: Use image node_id 5 for calling the ZonoConv obj's underlying member method code with example usage: obj.zonotope_add(x) and returns: x