class_docstr: Attention Unet based on
  Otkay et al. "Attention U-Net: Learning Where to Look for the Pancreas"
  https://arxiv.org/abs/1804.03999
  
  Args:
      spatial_dims: number of spatial dimensions of the input image.
      in_channels: number of the input channel.
      out_channels: number of the output classes.
      channels (Sequence[int]): sequence of channels. Top block first. The length of `channels` should be no less than 2.
      strides (Sequence[int]): stride to use for convolutions.
      kernel_size: convolution kernel size.
      up_kernel_size: convolution kernel size for transposed convolution layers.
      dropout: dropout ratio. Defaults to no dropout.
class_docstr_tok: ["Attention","Unet","based","on","Otkay","et","al",".","``","Attention","U-Net",":","Learning","Where","to","Look","for","the","Pancreas","''","https",":","\/\/arxiv.org\/abs\/1804.03999","Args",":","spatial_dims",":","number","of","spatial","dimensions","of","the","input","image",".","in_channels",":","number","of","the","input","channel",".","out_channels",":","number","of","the","output","classes",".","channels","(","Sequence","[","int","]",")",":","sequence","of","channels",".","Top","block","first",".","The","length","of","`","channels","`","should","be","no","less","than","2.","strides","(","Sequence","[","int","]",")",":","stride","to","use","for","convolutions",".","kernel_size",":","convolution","kernel","size",".","up_kernel_size",":","convolution","kernel","size","for","transposed","convolution","layers",".","dropout",":","dropout","ratio",".","Defaults","to","no","dropout","."]
code: def _get_bottom_layer(
      self, in_channels: int, out_channels: int, strides: int
  ) -> nn.Module:
      return AttentionLayer(
          spatial_dims=self.dimensions,
          in_channels=in_channels,
          out_channels=out_channels,
          submodule=ConvBlock(
              spatial_dims=self.dimensions,
              in_channels=in_channels,
              out_channels=out_channels,
              strides=strides,
              dropout=self.dropout,
          ),
          up_kernel_size=self.up_kernel_size,
          strides=strides,
          dropout=self.dropout,
      )
  
imports: from __future__ import annotations
  from collections.abc import Sequence
  import torch
  import torch.nn
  from monai.networks.blocks.convolutions import Convolution
  from monai.networks.layers.factories import Norm
label_desc: Use image node_id 2 for calling the AttentionUnet obj's underlying member method code with example usage: obj._get_bottom_layer(in_channels, out_channels, strides) and returns: AttentionLayer