class_docstr: Class for building the Affine Coupling subnet.
  It is passed as an argument to the `AllInOneBlock` module.
class_docstr_tok: ["Class","for","building","the","Affine","Coupling","subnet",".","It","is","passed","as","an","argument","to","the","`","AllInOneBlock","`","module","."]
docstr: Args:
      in_channels (int): Input channels.
      out_channels (int): Output channels.
  
  Returns:
      nn.Sequential: Affine Coupling subnet.
docstr_tok: ["Args",":","in_channels","(","int",")",":","Input","channels",".","out_channels","(","int",")",":","Output","channels",".","Returns",":","nn.Sequential",":","Affine","Coupling","subnet","."]
code: def __call__(
      self, in_channels: int, out_channels: int
  ) -> nn.Sequential:
      """
      Args:
          in_channels (int): Input channels.
          out_channels (int): Output channels.
  
      Returns:
          nn.Sequential: Affine Coupling subnet.
      """
      mid_channels = int(in_channels * self.subnet_channels_ratio)
      return nn.Sequential(
          nn.Conv2d(
              in_channels,
              mid_channels,
              self.kernel_size,
              padding="same",
          ),
          nn.ReLU(),
          nn.Conv2d(
              mid_channels,
              out_channels,
              self.kernel_size,
              padding="same",
          ),
      )
  
file_path: anomalib/src/anomalib/models/uflow/torch_model.py
imports: import torch.nn
  from FrEIA import framework
  from FrEIA import modules
  from anomalib.models.components.flow import AllInOneBlock
  from .anomaly_map import AnomalyMapGenerator
  from .feature_extraction import get_feature_extractor
label_desc: Use image node_id 2 for calling the AffineCouplingSubnet obj's underlying member method code with example usage: obj.__call__(in_channels, out_channels) and returns: nn