code: def __init__(
      self,
      in_channels,
      out_channels,
      video_kernel_size=3,
      *args,
      **kwargs,
  ):
      super().__init__(in_channels, out_channels, *args, **kwargs)
      if isinstance(video_kernel_size, Iterable):
          padding = [int(k // 2) for k in video_kernel_size]
      else:
          padding = int(video_kernel_size // 2)
  
      self.time_mix_conv = torch.nn.Conv3d(
          in_channels=out_channels,
          out_channels=out_channels,
          kernel_size=video_kernel_size,
          padding=padding,
      )
  
imports: from typing import Callable, Iterable, Union
  import torch
  from einops import rearrange, repeat
  from sgm.modules.diffusionmodules.model import XFORMERS_IS_AVAILABLE, AttnBlock, Decoder, MemoryEfficientAttnBlock, ResnetBlock
  from sgm.modules.diffusionmodules.openaimodel import ResBlock, timestep_embedding
  from sgm.modules.video_attention import VideoTransformerBlock
  from sgm.util import partialclass
label_desc: Use image node_id 1 to create a new AE3DConv object from inherited base classes: torch.nn with example: obj = AE3DConv(in_channels, out_channels, video_kernel_size)