docstr: ComplexConv2d.
  
  in_channels: real+imag
  out_channels: real+imag
  kernel_size : input [B,C,D,T] kernel size in [D,T]
  padding : input [B,C,D,T] padding in [D,T]
  causal: if causal, will padding time dimension's left side,
          otherwise both
docstr_tok: ["ComplexConv2d",".","in_channels",":","real+imag","out_channels",":","real+imag","kernel_size",":","input","[","B",",","C",",","D",",","T","]","kernel","size","in","[","D",",","T","]","padding",":","input","[","B",",","C",",","D",",","T","]","padding","in","[","D",",","T","]","causal",":","if","causal",",","will","padding","time","dimension","'s","left","side",",","otherwise","both"]
code: def __init__(
      self,
      in_channels,
      out_channels,
      kernel_size=(1, 1),
      stride=(1, 1),
      padding=(0, 0),
      dilation=1,
      groups=1,
      causal=True,
      complex_axis=1,
  ):
      """ComplexConv2d.
  
      in_channels: real+imag
      out_channels: real+imag
      kernel_size : input [B,C,D,T] kernel size in [D,T]
      padding : input [B,C,D,T] padding in [D,T]
      causal: if causal, will padding time dimension's left side,
              otherwise both
      """
      super(ComplexConv2d, self).__init__()
      self.in_channels = in_channels // 2
      self.out_channels = out_channels // 2
      self.kernel_size = kernel_size
      self.stride = stride
      self.padding = padding
      self.causal = causal
      self.groups = groups
      self.dilation = dilation
      self.complex_axis = complex_axis
      self.real_conv = nn.Conv2d(
          self.in_channels,
          self.out_channels,
          kernel_size,
          self.stride,
          padding=[self.padding[0], 0],
          dilation=self.dilation,
          groups=self.groups,
      )
      self.imag_conv = nn.Conv2d(
          self.in_channels,
          self.out_channels,
          kernel_size,
          self.stride,
          padding=[self.padding[0], 0],
          dilation=self.dilation,
          groups=self.groups,
      )
  
      nn.init.normal_(self.real_conv.weight.data, std=0.05)
      nn.init.normal_(self.imag_conv.weight.data, std=0.05)
      nn.init.constant_(self.real_conv.bias, 0.0)
      nn.init.constant_(self.imag_conv.bias, 0.0)
  
imports: import torch
  import torch.nn
  import torch.nn.functional
label_desc: Use image node_id 1 to create a new ComplexConv2d object from inherited base classes: nn with example: obj = ComplexConv2d(in_channels, out_channels, kernel_size, stride, padding, dilation, groups, causal, complex_axis)