Sequential(
(0): TimmBody(
(model): ConvNeXt(
(stem): Sequential(
(0): Conv2d(3, 96, kernel_size=(4, 4), stride=(4, 4))
(1): LayerNorm2d((96,), eps=1e-06, elementwise_affine=True)
)
(stages): Sequential(
(0): ConvNeXtStage(
(downsample): Identity()
(blocks): Sequential(
(0): ConvNeXtBlock(
(conv_dw): Conv2d(96, 96, kernel_size=(7, 7), stride=(1, 1), padding=(3, 3), groups=96)
(norm): LayerNorm((96,), eps=1e-06, elementwise_affine=True)
(mlp): GlobalResponseNormMlp(
(fc1): Linear(in_features=96, out_features=384, bias=True)
(act): GELU()
(drop1): Dropout(p=0.0, inplace=False)
(grn): GlobalResponseNorm()
(fc2): Linear(in_features=384, out_features=96, bias=True)
(drop2): Dropout(p=0.0, inplace=False)
)
(shortcut): Identity()
(drop_path): Identity()
)
(1): ConvNeXtBlock(
(conv_dw): Conv2d(96, 96, kernel_size=(7, 7), stride=(1, 1), padding=(3, 3), groups=96)
(norm): LayerNorm((96,), eps=1e-06, elementwise_affine=True)
(mlp): GlobalResponseNormMlp(
(fc1): Linear(in_features=96, out_features=384, bias=True)
(act): GELU()
(drop1): Dropout(p=0.0, inplace=False)
(grn): GlobalResponseNorm()
(fc2): Linear(in_features=384, out_features=96, bias=True)
(drop2): Dropout(p=0.0, inplace=False)
)
(shortcut): Identity()
(drop_path): Identity()
)
(2): ConvNeXtBlock(
(conv_dw): Conv2d(96, 96, kernel_size=(7, 7), stride=(1, 1), padding=(3, 3), groups=96)
(norm): LayerNorm((96,), eps=1e-06, elementwise_affine=True)
(mlp): GlobalResponseNormMlp(
(fc1): Linear(in_features=96, out_features=384, bias=True)
(act): GELU()
(drop1): Dropout(p=0.0, inplace=False)
(grn): GlobalResponseNorm()
(fc2): Linear(in_features=384, out_features=96, bias=True)
(drop2): Dropout(p=0.0, inplace=False)
)
(shortcut): Identity()
(drop_path): Identity()
)
)
)
(1): ConvNeXtStage(
(downsample): Sequential(
(0): LayerNorm2d((96,), eps=1e-06, elementwise_affine=True)
(1): Conv2d(96, 192, kernel_size=(2, 2), stride=(2, 2))
)
(blocks): Sequential(
(0): ConvNeXtBlock(
(conv_dw): Conv2d(192, 192, kernel_size=(7, 7), stride=(1, 1), padding=(3, 3), groups=192)
(norm): LayerNorm((192,), eps=1e-06, elementwise_affine=True)
(mlp): GlobalResponseNormMlp(
(fc1): Linear(in_features=192, out_features=768, bias=True)
(act): GELU()
(drop1): Dropout(p=0.0, inplace=False)
(grn): GlobalResponseNorm()
(fc2): Linear(in_features=768, out_features=192, bias=True)
(drop2): Dropout(p=0.0, inplace=False)
)
(shortcut): Identity()
(drop_path): Identity()
)
(1): ConvNeXtBlock(
(conv_dw): Conv2d(192, 192, kernel_size=(7, 7), stride=(1, 1), padding=(3, 3), groups=192)
(norm): LayerNorm((192,), eps=1e-06, elementwise_affine=True)
(mlp): GlobalResponseNormMlp(
(fc1): Linear(in_features=192, out_features=768, bias=True)
(act): GELU()
(drop1): Dropout(p=0.0, inplace=False)
(grn): GlobalResponseNorm()
(fc2): Linear(in_features=768, out_features=192, bias=True)
(drop2): Dropout(p=0.0, inplace=False)
)
(shortcut): Identity()
(drop_path): Identity()
)
(2): ConvNeXtBlock(
(conv_dw): Conv2d(192, 192, kernel_size=(7, 7), stride=(1, 1), padding=(3, 3), groups=192)
(norm): LayerNorm((192,), eps=1e-06, elementwise_affine=True)
(mlp): GlobalResponseNormMlp(
(fc1): Linear(in_features=192, out_features=768, bias=True)
(act): GELU()
(drop1): Dropout(p=0.0, inplace=False)
(grn): GlobalResponseNorm()
(fc2): Linear(in_features=768, out_features=192, bias=True)
(drop2): Dropout(p=0.0, inplace=False)
)
(shortcut): Identity()
(drop_path): Identity()
)
)
)
(2): ConvNeXtStage(
(downsample): Sequential(
(0): LayerNorm2d((192,), eps=1e-06, elementwise_affine=True)
(1): Conv2d(192, 384, kernel_size=(2, 2), stride=(2, 2))
)
(blocks): Sequential(
(0): ConvNeXtBlock(
(conv_dw): Conv2d(384, 384, kernel_size=(7, 7), stride=(1, 1), padding=(3, 3), groups=384)
(norm): LayerNorm((384,), eps=1e-06, elementwise_affine=True)
(mlp): GlobalResponseNormMlp(
(fc1): Linear(in_features=384, out_features=1536, bias=True)
(act): GELU()
(drop1): Dropout(p=0.0, inplace=False)
(grn): GlobalResponseNorm()
(fc2): Linear(in_features=1536, out_features=384, bias=True)
(drop2): Dropout(p=0.0, inplace=False)
)
(shortcut): Identity()
(drop_path): Identity()
)
(1): ConvNeXtBlock(
(conv_dw): Conv2d(384, 384, kernel_size=(7, 7), stride=(1, 1), padding=(3, 3), groups=384)
(norm): LayerNorm((384,), eps=1e-06, elementwise_affine=True)
(mlp): GlobalResponseNormMlp(
(fc1): Linear(in_features=384, out_features=1536, bias=True)
(act): GELU()
(drop1): Dropout(p=0.0, inplace=False)
(grn): GlobalResponseNorm()
(fc2): Linear(in_features=1536, out_features=384, bias=True)
(drop2): Dropout(p=0.0, inplace=False)
)
(shortcut): Identity()
(drop_path): Identity()
)
(2): ConvNeXtBlock(
(conv_dw): Conv2d(384, 384, kernel_size=(7, 7), stride=(1, 1), padding=(3, 3), groups=384)
(norm): LayerNorm((384,), eps=1e-06, elementwise_affine=True)
(mlp): GlobalResponseNormMlp(
(fc1): Linear(in_features=384, out_features=1536, bias=True)
(act): GELU()
(drop1): Dropout(p=0.0, inplace=False)
(grn): GlobalResponseNorm()
(fc2): Linear(in_features=1536, out_features=384, bias=True)
(drop2): Dropout(p=0.0, inplace=False)
)
(shortcut): Identity()
(drop_path): Identity()
)
(3): ConvNeXtBlock(
(conv_dw): Conv2d(384, 384, kernel_size=(7, 7), stride=(1, 1), padding=(3, 3), groups=384)
(norm): LayerNorm((384,), eps=1e-06, elementwise_affine=True)
(mlp): GlobalResponseNormMlp(
(fc1): Linear(in_features=384, out_features=1536, bias=True)
(act): GELU()
(drop1): Dropout(p=0.0, inplace=False)
(grn): GlobalResponseNorm()
(fc2): Linear(in_features=1536, out_features=384, bias=True)
(drop2): Dropout(p=0.0, inplace=False)
)
(shortcut): Identity()
(drop_path): Identity()
)
(4): ConvNeXtBlock(
(conv_dw): Conv2d(384, 384, kernel_size=(7, 7), stride=(1, 1), padding=(3, 3), groups=384)
(norm): LayerNorm((384,), eps=1e-06, elementwise_affine=True)
(mlp): GlobalResponseNormMlp(
(fc1): Linear(in_features=384, out_features=1536, bias=True)
(act): GELU()
(drop1): Dropout(p=0.0, inplace=False)
(grn): GlobalResponseNorm()
(fc2): Linear(in_features=1536, out_features=384, bias=True)
(drop2): Dropout(p=0.0, inplace=False)
)
(shortcut): Identity()
(drop_path): Identity()
)
(5): ConvNeXtBlock(
(conv_dw): Conv2d(384, 384, kernel_size=(7, 7), stride=(1, 1), padding=(3, 3), groups=384)
(norm): LayerNorm((384,), eps=1e-06, elementwise_affine=True)
(mlp): GlobalResponseNormMlp(
(fc1): Linear(in_features=384, out_features=1536, bias=True)
(act): GELU()
(drop1): Dropout(p=0.0, inplace=False)
(grn): GlobalResponseNorm()
(fc2): Linear(in_features=1536, out_features=384, bias=True)
(drop2): Dropout(p=0.0, inplace=False)
)
(shortcut): Identity()
(drop_path): Identity()
)
(6): ConvNeXtBlock(
(conv_dw): Conv2d(384, 384, kernel_size=(7, 7), stride=(1, 1), padding=(3, 3), groups=384)
(norm): LayerNorm((384,), eps=1e-06, elementwise_affine=True)
(mlp): GlobalResponseNormMlp(
(fc1): Linear(in_features=384, out_features=1536, bias=True)
(act): GELU()
(drop1): Dropout(p=0.0, inplace=False)
(grn): GlobalResponseNorm()
(fc2): Linear(in_features=1536, out_features=384, bias=True)
(drop2): Dropout(p=0.0, inplace=False)
)
(shortcut): Identity()
(drop_path): Identity()
)
(7): ConvNeXtBlock(
(conv_dw): Conv2d(384, 384, kernel_size=(7, 7), stride=(1, 1), padding=(3, 3), groups=384)
(norm): LayerNorm((384,), eps=1e-06, elementwise_affine=True)
(mlp): GlobalResponseNormMlp(
(fc1): Linear(in_features=384, out_features=1536, bias=True)
(act): GELU()
(drop1): Dropout(p=0.0, inplace=False)
(grn): GlobalResponseNorm()
(fc2): Linear(in_features=1536, out_features=384, bias=True)
(drop2): Dropout(p=0.0, inplace=False)
)
(shortcut): Identity()
(drop_path): Identity()
)
(8): ConvNeXtBlock(
(conv_dw): Conv2d(384, 384, kernel_size=(7, 7), stride=(1, 1), padding=(3, 3), groups=384)
(norm): LayerNorm((384,), eps=1e-06, elementwise_affine=True)
(mlp): GlobalResponseNormMlp(
(fc1): Linear(in_features=384, out_features=1536, bias=True)
(act): GELU()
(drop1): Dropout(p=0.0, inplace=False)
(grn): GlobalResponseNorm()
(fc2): Linear(in_features=1536, out_features=384, bias=True)
(drop2): Dropout(p=0.0, inplace=False)
)
(shortcut): Identity()
(drop_path): Identity()
)
)
)
(3): ConvNeXtStage(
(downsample): Sequential(
(0): LayerNorm2d((384,), eps=1e-06, elementwise_affine=True)
(1): Conv2d(384, 768, kernel_size=(2, 2), stride=(2, 2))
)
(blocks): Sequential(
(0): ConvNeXtBlock(
(conv_dw): Conv2d(768, 768, kernel_size=(7, 7), stride=(1, 1), padding=(3, 3), groups=768)
(norm): LayerNorm((768,), eps=1e-06, elementwise_affine=True)
(mlp): GlobalResponseNormMlp(
(fc1): Linear(in_features=768, out_features=3072, bias=True)
(act): GELU()
(drop1): Dropout(p=0.0, inplace=False)
(grn): GlobalResponseNorm()
(fc2): Linear(in_features=3072, out_features=768, bias=True)
(drop2): Dropout(p=0.0, inplace=False)
)
(shortcut): Identity()
(drop_path): Identity()
)
(1): ConvNeXtBlock(
(conv_dw): Conv2d(768, 768, kernel_size=(7, 7), stride=(1, 1), padding=(3, 3), groups=768)
(norm): LayerNorm((768,), eps=1e-06, elementwise_affine=True)
(mlp): GlobalResponseNormMlp(
(fc1): Linear(in_features=768, out_features=3072, bias=True)
(act): GELU()
(drop1): Dropout(p=0.0, inplace=False)
(grn): GlobalResponseNorm()
(fc2): Linear(in_features=3072, out_features=768, bias=True)
(drop2): Dropout(p=0.0, inplace=False)
)
(shortcut): Identity()
(drop_path): Identity()
)
(2): ConvNeXtBlock(
(conv_dw): Conv2d(768, 768, kernel_size=(7, 7), stride=(1, 1), padding=(3, 3), groups=768)
(norm): LayerNorm((768,), eps=1e-06, elementwise_affine=True)
(mlp): GlobalResponseNormMlp(
(fc1): Linear(in_features=768, out_features=3072, bias=True)
(act): GELU()
(drop1): Dropout(p=0.0, inplace=False)
(grn): GlobalResponseNorm()
(fc2): Linear(in_features=3072, out_features=768, bias=True)
(drop2): Dropout(p=0.0, inplace=False)
)
(shortcut): Identity()
(drop_path): Identity()
)
)
)
)
(norm_pre): Identity()
(head): NormMlpClassifierHead(
(global_pool): SelectAdaptivePool2d (pool_type=avg, flatten=Identity())
(norm): LayerNorm2d((768,), eps=1e-06, elementwise_affine=True)
(flatten): Flatten(start_dim=1, end_dim=-1)
(pre_logits): Identity()
(drop): Dropout(p=0.0, inplace=False)
(fc): Identity()
)
)
)
(1): Sequential(
(0): AdaptiveConcatPool2d(
(ap): AdaptiveAvgPool2d(output_size=1)
(mp): AdaptiveMaxPool2d(output_size=1)
)
(1): fastai.layers.Flatten(full=False)
(2): BatchNorm1d(1536, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(3): Dropout(p=0.25, inplace=False)
(4): Linear(in_features=1536, out_features=512, bias=False)
(5): ReLU(inplace=True)
(6): BatchNorm1d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(7): Dropout(p=0.5, inplace=False)
(8): Linear(in_features=512, out_features=6, bias=False)
)
)