class_docstr: Residual block (a) in the paper
class_docstr_tok: ["Residual","block","(","a",")","in","the","paper"]
code: def __init__(
      self, in_channel, out_channel, kernel_size=3, dilation=None
  ):
      super(ResidualBlock_a, self).__init__()
  
      half_channel = out_channel // 2
      self.ln1 = nn.LayerNorm(out_channel, eps=1e-8)
      self.conv1 = nn.Conv2d(
          in_channel, half_channel, kernel_size=(1, 1), padding=0
      )
  
      self.ln2 = nn.LayerNorm(half_channel, eps=1e-8)
      self.conv2 = nn.Conv2d(
          half_channel,
          half_channel,
          kernel_size=(1, kernel_size),
          padding=0,
          dilation=dilation,
      )
  
      self.ln3 = nn.LayerNorm(half_channel, eps=1e-8)
      self.conv3 = nn.Conv2d(
          half_channel, out_channel, kernel_size=(1, 1), padding=0
      )
  
      self.dilation = dilation
      self.kernel_size = kernel_size
  
imports: import numpy
  import torch
  from torch import nn
  from torch.nn import functional
  from torch.nn.init import uniform_, xavier_normal_, constant_
  from recbole.model.abstract_recommender import SequentialRecommender
  from recbole.model.loss import RegLoss, BPRLoss
label_desc: Use image node_id 1 to create a new ResidualBlock_a object from inherited base classes: nn with example: obj = ResidualBlock_a(in_channel, out_channel, kernel_size, dilation)