class_docstr: .. image:: _static/img/nopool_aspp_arch.png
      :align: center
      :scale: 25%
  
  An ASPP-based model without initial pooling layers.
  
  :param drop_rate: dropout rate.
  :param bn_momentum: batch normalization momentum.
  
  .. seealso::
      Perone, C. S., et al (2017). Spinal cord gray matter
      segmentation using deep dilated convolutions.
      Nature Scientific Reports link:
      https://www.nature.com/articles/s41598-018-24304-3
class_docstr_tok: ["..","image",":",":","_static\/img\/nopool_aspp_arch.png",":","align",":","center",":","scale",":","25","%","An","ASPP-based","model","without","initial","pooling","layers",".",":","param","drop_rate",":","dropout","rate",".",":","param","bn_momentum",":","batch","normalization","momentum",".","..","seealso",":",":","Perone",",","C.","S.",",","et","al","(","2017",")",".","Spinal","cord","gray","matter","segmentation","using","deep","dilated","convolutions",".","Nature","Scientific","Reports","link",":","https",":","\/\/www.nature.com\/articles\/s41598-018-24304-3"]
docstr: Model forward pass.
  
  :param x: input data.
docstr_tok: ["Model","forward","pass",".",":","param","x",":","input","data","."]
code: def forward(self, x):
      """Model forward pass.
  
      :param x: input data.
      """
      x = F.relu(self.conv1a(x))
      x = self.conv1a_bn(x)
      x = self.conv1a_drop(x)
  
      x = F.relu(self.conv1b(x))
      x = self.conv1b_bn(x)
      x = self.conv1b_drop(x)
  
      x = F.relu(self.conv2a(x))
      x = self.conv2a_bn(x)
      x = self.conv2a_drop(x)
      x = F.relu(self.conv2b(x))
      x = self.conv2b_bn(x)
      x = self.conv2b_drop(x)
  
      # Branch 1x1 convolution
      branch1 = F.relu(self.branch1a(x))
      branch1 = self.branch1a_bn(branch1)
      branch1 = self.branch1a_drop(branch1)
      branch1 = F.relu(self.branch1b(branch1))
      branch1 = self.branch1b_bn(branch1)
      branch1 = self.branch1b_drop(branch1)
  
      # Branch for 3x3 rate 6
      branch2 = F.relu(self.branch2a(x))
      branch2 = self.branch2a_bn(branch2)
      branch2 = self.branch2a_drop(branch2)
      branch2 = F.relu(self.branch2b(branch2))
      branch2 = self.branch2b_bn(branch2)
      branch2 = self.branch2b_drop(branch2)
  
      # Branch for 3x3 rate 6
      branch3 = F.relu(self.branch3a(x))
      branch3 = self.branch3a_bn(branch3)
      branch3 = self.branch3a_drop(branch3)
      branch3 = F.relu(self.branch3b(branch3))
      branch3 = self.branch3b_bn(branch3)
      branch3 = self.branch3b_drop(branch3)
  
      # Branch for 3x3 rate 18
      branch4 = F.relu(self.branch4a(x))
      branch4 = self.branch4a_bn(branch4)
      branch4 = self.branch4a_drop(branch4)
      branch4 = F.relu(self.branch4b(branch4))
      branch4 = self.branch4b_bn(branch4)
      branch4 = self.branch4b_drop(branch4)
  
      # Branch for 3x3 rate 24
      branch5 = F.relu(self.branch5a(x))
      branch5 = self.branch5a_bn(branch5)
      branch5 = self.branch5a_drop(branch5)
      branch5 = F.relu(self.branch5b(branch5))
      branch5 = self.branch5b_bn(branch5)
      branch5 = self.branch5b_drop(branch5)
  
      # Global Average Pooling
      global_pool = F.avg_pool2d(x, kernel_size=x.size()[2:])
      global_pool = global_pool.expand(x.size())
  
      concatenation = torch.cat(
          [branch1, branch2, branch3, branch4, branch5, global_pool],
          dim=1,
      )
  
      concatenation = self.concat_bn(concatenation)
      concatenation = self.concat_drop(concatenation)
  
      amort = F.relu(self.amort(concatenation))
      amort = self.amort_bn(amort)
      amort = self.amort_drop(amort)
  
      predictions = self.prediction(amort)
      predictions = torch.sigmoid(predictions)
  
      return predictions
  
imports: import torch
  import torch.nn
  from torch.nn import Module
  import torch.nn.functional
label_desc: Use image node_id 2 for calling the NoPoolASPP obj's underlying member method code with example usage: obj.forward(x) and returns: predictions