code: def __init__(
      self,
      conditioning_embedding_channels,
      conditioning_channels=3,
      block_out_channels=(16, 32, 96, 256),
  ):
      super().__init__()
  
      self.conv_in = nn.Conv2d(
          conditioning_channels,
          block_out_channels[0],
          kernel_size=3,
          padding=1,
      )
  
      self.blocks = nn.ModuleList([])
  
      for i in range(len(block_out_channels) - 1):
          channel_in = block_out_channels[i]
          channel_out = block_out_channels[i + 1]
          self.blocks.append(
              nn.Conv2d(
                  channel_in, channel_in, kernel_size=3, padding=1
              )
          )
          self.blocks.append(
              nn.Conv2d(
                  channel_in,
                  channel_out,
                  kernel_size=3,
                  padding=1,
                  stride=2,
              )
          )
  
      self.conv_out = nn.Conv2d(
          block_out_channels[-1],
          conditioning_embedding_channels,
          kernel_size=3,
          padding=1,
      )
  
file_path: ml-stable-diffusion/python_coreml_stable_diffusion/controlnet.py
imports: from diffusers.configuration_utils import ConfigMixin, register_to_config
  from diffusers import ModelMixin
  import torch
  import torch.nn
  import torch.nn.functional
  from .unet import Timesteps, TimestepEmbedding, get_down_block, UNetMidBlock2DCrossAttn, linear_to_conv2d_map
label_desc: Use image node_id 1 to create a new ControlNetConditioningEmbedding object from inherited base classes: nn with example: obj = ControlNetConditioningEmbedding(conditioning_embedding_channels, conditioning_channels, block_out_channels)