SENet(
  (features): Sequential(
    (init_block): SEInitBlock(
      (conv1): ConvBlock(
        (conv): Conv2d(3, 64, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1), bias=False)
        (bn): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
        (activ): ReLU(inplace=True)
      )
      (conv2): ConvBlock(
        (conv): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)
        (bn): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
        (activ): ReLU(inplace=True)
      )
      (conv3): ConvBlock(
        (conv): Conv2d(64, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)
        (bn): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
        (activ): ReLU(inplace=True)
      )
      (pool): MaxPool2d(kernel_size=3, stride=2, padding=1, dilation=1, ceil_mode=False)
    )
    (stage1): Sequential1(
      (unit1): SENetUnit(
        (body): SENetBottleneck(
          (conv1): ConvBlock(
            (conv): Conv2d(128, 64, kernel_size=(1, 1), stride=(1, 1), bias=False)
            (bn): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
            (activ): ReLU(inplace=True)
          )
          (conv2): ConvBlock(
            (conv): Conv2d(64, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)
            (bn): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
            (activ): ReLU(inplace=True)
          )
          (conv3): ConvBlock(
            (conv): Conv2d(128, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)
            (bn): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
          )
        )
        (se): SEBlock(
          (pool): AdaptiveAvgPool2d(output_size=(1, 1))
          (conv1): Conv2d(256, 16, kernel_size=(1, 1), stride=(1, 1), bias=False)
          (activ): ReLU(inplace=True)
          (conv2): Conv2d(16, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)
          (sigmoid): ReLU(inplace=True)
        )
        (identity_conv): ConvBlock(
          (conv): Conv2d(128, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)
          (bn): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
        )
        (activ): ReLU(inplace=True)
      )
    )
    (stage2): Sequential2(
      (unit1): SENetUnit(
        (body): SENetBottleneck(
          (conv1): ConvBlock(
            (conv): Conv2d(256, 128, kernel_size=(1, 1), stride=(1, 1), bias=False)
            (bn): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
            (activ): ReLU(inplace=True)
          )
          (conv2): ConvBlock(
            (conv): Conv2d(128, 256, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1), bias=False)
            (bn): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
            (activ): ReLU(inplace=True)
          )
          (conv3): ConvBlock(
            (conv): Conv2d(256, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)
            (bn): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
          )
        )
        (se): SEBlock(
          (pool): AdaptiveAvgPool2d(output_size=(1, 1))
          (conv1): Conv2d(512, 32, kernel_size=(1, 1), stride=(1, 1), bias=False)
          (activ): ReLU(inplace=True)
          (conv2): Conv2d(32, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)
          (sigmoid): ReLU(inplace=True)
        )
        (identity_conv): ConvBlock(
          (conv): Conv2d(256, 512, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1), bias=False)
          (bn): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
        )
        (activ): ReLU(inplace=True)
      )
    )
    (stage3): Sequential3(
      (unit1): SENetUnit(
        (body): SENetBottleneck(
          (conv1): ConvBlock(
            (conv): Conv2d(512, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)
            (bn): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
            (activ): ReLU(inplace=True)
          )
          (conv2): ConvBlock(
            (conv): Conv2d(256, 512, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1), bias=False)
            (bn): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
            (activ): ReLU(inplace=True)
          )
          (conv3): ConvBlock(
            (conv): Conv2d(512, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)
            (bn): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
          )
        )
        (se): SEBlock(
          (pool): AdaptiveAvgPool2d(output_size=(1, 1))
          (conv1): Conv2d(1024, 64, kernel_size=(1, 1), stride=(1, 1), bias=False)
          (activ): ReLU(inplace=True)
          (conv2): Conv2d(64, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)
          (sigmoid): ReLU(inplace=True)
        )
        (identity_conv): ConvBlock(
          (conv): Conv2d(512, 1024, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1), bias=False)
          (bn): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
        )
        (activ): ReLU(inplace=True)
      )
    )
    (stage4): Sequential4(
      (unit1): SENetUnit(
        (body): SENetBottleneck(
          (conv1): ConvBlock(
            (conv): Conv2d(1024, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)
            (bn): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
            (activ): ReLU(inplace=True)
          )
          (conv2): ConvBlock(
            (conv): Conv2d(512, 1024, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1), bias=False)
            (bn): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
            (activ): ReLU(inplace=True)
          )
          (conv3): ConvBlock(
            (conv): Conv2d(1024, 2048, kernel_size=(1, 1), stride=(1, 1), bias=False)
            (bn): BatchNorm2d(2048, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
          )
        )
        (se): SEBlock(
          (pool): AdaptiveAvgPool2d(output_size=(1, 1))
          (conv1): Conv2d(2048, 128, kernel_size=(1, 1), stride=(1, 1), bias=False)
          (activ): ReLU(inplace=True)
          (conv2): Conv2d(128, 2048, kernel_size=(1, 1), stride=(1, 1), bias=False)
          (sigmoid): ReLU(inplace=True)
        )
        (identity_conv): ConvBlock(
          (conv): Conv2d(1024, 2048, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1), bias=False)
          (bn): BatchNorm2d(2048, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
        )
        (activ): ReLU(inplace=True)
      )
    )
    (final_pool): MaxPool2d(kernel_size=7, stride=1, padding=0, dilation=1, ceil_mode=False)
  )
  (output): Sequential5(
    (dropout): Dropout(p=0.2, inplace=False)
    (fc): Linear(in_features=2048, out_features=1000, bias=True)
  )
)
