class_docstr: Class implementing a convolutional layer in the interval/box domain.
class_docstr_tok: ["Class","implementing","a","convolutional","layer","in","the","interval\/box","domain","."]
docstr: Re converts the weights into a dense equivalent layer.
  Must be called after every backwards if multiple gradients wish to be taken (like for crafting pgd).
docstr_tok: ["Re","converts","the","weights","into","a","dense","equivalent","layer",".","Must","be","called","after","every","backwards","if","multiple","gradients","wish","to","be","taken","(","like","for","crafting","pgd",")","."]
code: def re_convert(self, device: Union[str, "torch.device"]) -> None:
      """
      Re converts the weights into a dense equivalent layer.
      Must be called after every backwards if multiple gradients wish to be taken (like for crafting pgd).
      """
      self.dense_weights, self.bias = self.convert_to_dense(device)
      self.dense_weights = self.dense_weights.to(device)
      if self.bias is not None:
          self.bias = self.bias.to(device)
  
imports: from typing import List, Union, Tuple, Optional
  import torch
  import numpy
label_desc: Use image node_id 2 for calling the PyTorchIntervalConv2D obj's underlying member method code with example usage: obj.re_convert(device) without return types