class_docstr: A reference of 3D U-Net model.
  
  Implementation origin :
  https://github.com/shiba24/3d-unet/blob/master/pytorch/model.py
  
  .. seealso::
      Özgün Çiçek, Ahmed Abdulkadir, Soeren S. Lienkamp, Thomas Brox
      and Olaf Ronneberger (2016). 3D U-Net: Learning Dense Volumetric
      Segmentation from Sparse Annotation
      ArXiv link: https://arxiv.org/pdf/1606.06650.pdf
class_docstr_tok: ["A","reference","of","3D","U-Net","model",".","Implementation","origin",":","https",":","\/\/github.com\/shiba24\/3d-unet\/blob\/master\/pytorch\/model.py","..","seealso",":",":","\u00d6zg\u00fcn","\u00c7i\u00e7ek",",","Ahmed","Abdulkadir",",","Soeren","S.","Lienkamp",",","Thomas","Brox","and","Olaf","Ronneberger","(","2016",")",".","3D","U-Net",":","Learning","Dense","Volumetric","Segmentation","from","Sparse","Annotation","ArXiv","link",":","https",":","\/\/arxiv.org\/pdf\/1606.06650.pdf"]
code: def __init__(self, in_channel, n_classes):
      self.in_channel = in_channel
      self.n_classes = n_classes
      super(UNet3D, self).__init__()
      self.ec0 = self.down_conv(
          self.in_channel, 32, bias=False, batchnorm=False
      )
      self.ec1 = self.down_conv(32, 64, bias=False, batchnorm=False)
      self.ec2 = self.down_conv(64, 64, bias=False, batchnorm=False)
      self.ec3 = self.down_conv(64, 128, bias=False, batchnorm=False)
      self.ec4 = self.down_conv(128, 128, bias=False, batchnorm=False)
      self.ec5 = self.down_conv(128, 256, bias=False, batchnorm=False)
      self.ec6 = self.down_conv(256, 256, bias=False, batchnorm=False)
      self.ec7 = self.down_conv(256, 512, bias=False, batchnorm=False)
  
      self.pool0 = nn.MaxPool3d(2)
      self.pool1 = nn.MaxPool3d(2)
      self.pool2 = nn.MaxPool3d(2)
  
      self.dc9 = self.up_conv(
          512, 512, kernel_size=2, stride=2, bias=False
      )
      self.dc8 = self.down_conv(256 + 512, 256, bias=False)
      self.dc7 = self.down_conv(256, 256, bias=False)
      self.dc6 = self.up_conv(
          256, 256, kernel_size=2, stride=2, bias=False
      )
      self.dc5 = self.down_conv(128 + 256, 128, bias=False)
      self.dc4 = self.down_conv(128, 128, bias=False)
      self.dc3 = self.up_conv(
          128, 128, kernel_size=2, stride=2, bias=False
      )
      self.dc2 = self.down_conv(64 + 128, 64, bias=False)
      self.dc1 = self.down_conv(
          64, 64, kernel_size=3, stride=1, padding=1, bias=False
      )
      self.dc0 = self.down_conv(
          64, n_classes, kernel_size=1, stride=1, padding=0, bias=False
      )
  
imports: import torch
  import torch.nn
  from torch.nn import Module
  import torch.nn.functional
label_desc: Use image node_id 1 to create a new UNet3D object from inherited base classes: nn with example: obj = UNet3D(in_channel, n_classes)