code: def __init__(
      self,
      in_planes,
      out_planes,
      kernel_size=3,
      double=True,
      norm=nn.BatchNorm3D,
      skip=True,
  ):
      super(Conv3DBlock, self).__init__()
  
      self.skip = skip
      self.downsample = in_planes != out_planes
      self.final_activation = nn.LeakyReLU(negative_slope=0.01)
      padding = (kernel_size - 1) // 2
      if double:
          self.conv_block = nn.Sequential(
              nn.Conv3D(
                  in_planes,
                  out_planes,
                  kernel_size=kernel_size,
                  stride=1,
                  padding=padding,
              ),
              norm(out_planes),
              nn.LeakyReLU(negative_slope=0.01),
              nn.Conv3D(
                  out_planes,
                  out_planes,
                  kernel_size=kernel_size,
                  stride=1,
                  padding=padding,
              ),
              norm(out_planes),
          )
      else:
          self.conv_block = nn.Sequential(
              nn.Conv3D(
                  in_planes,
                  out_planes,
                  kernel_size=kernel_size,
                  stride=1,
                  padding=padding,
              ),
              norm(out_planes),
          )
  
      if self.skip and self.downsample:
          self.conv_down = nn.Sequential(
              nn.Conv3D(
                  in_planes,
                  out_planes,
                  kernel_size=1,
                  stride=1,
                  padding=0,
              ),
              norm(out_planes),
          )
  
imports: from typing import List, Tuple
  import numpy
  import paddle
  import paddle.nn
  from paddle import Tensor
  from medicalseg.cvlibs import manager
label_desc: Use image node_id 1 to create a new Conv3DBlock object from inherited base classes: nn with example: obj = Conv3DBlock(in_planes, out_planes, kernel_size, double, norm, skip)