Skip to content

The models created by functions such as create_mednext_v1 or create_mednextv1_large... cannot be used normally. #36

@goodsave

Description

@goodsave

When I specify the main function in MedNextV1.py, the following error is reported:

/home/allen/miniconda3/envs/P39/bin/python /mnt/d/project/Deeplearning/MITrans/mednext/MedNextV1.py
31246146
MedNeXt(
(stem): Conv2d(1, 32, kernel_size=(1, 1), stride=(1, 1))
(enc_block_0): Sequential(
(0): MedNeXtBlock(
(conv1): Conv2d(32, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=32)
(norm): GroupNorm(32, 32, eps=1e-05, affine=True)
(conv2): Conv2d(32, 64, kernel_size=(1, 1), stride=(1, 1))
(act): GELU(approximate='none')
(conv3): Conv2d(64, 32, kernel_size=(1, 1), stride=(1, 1))
)
(1): MedNeXtBlock(
(conv1): Conv2d(32, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=32)
(norm): GroupNorm(32, 32, eps=1e-05, affine=True)
(conv2): Conv2d(32, 64, kernel_size=(1, 1), stride=(1, 1))
(act): GELU(approximate='none')
(conv3): Conv2d(64, 32, kernel_size=(1, 1), stride=(1, 1))
)
(2): MedNeXtBlock(
(conv1): Conv2d(32, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=32)
(norm): GroupNorm(32, 32, eps=1e-05, affine=True)
(conv2): Conv2d(32, 64, kernel_size=(1, 1), stride=(1, 1))
(act): GELU(approximate='none')
(conv3): Conv2d(64, 32, kernel_size=(1, 1), stride=(1, 1))
)
)
(down_0): MedNeXtDownBlock(
(conv1): Conv2d(32, 32, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1), groups=32)
(norm): GroupNorm(32, 32, eps=1e-05, affine=True)
(conv2): Conv2d(32, 96, kernel_size=(1, 1), stride=(1, 1))
(act): GELU(approximate='none')
(conv3): Conv2d(96, 64, kernel_size=(1, 1), stride=(1, 1))
(res_conv): Conv2d(32, 64, kernel_size=(1, 1), stride=(2, 2))
)
(enc_block_1): Sequential(
(0): MedNeXtBlock(
(conv1): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=64)
(norm): GroupNorm(64, 64, eps=1e-05, affine=True)
(conv2): Conv2d(64, 192, kernel_size=(1, 1), stride=(1, 1))
(act): GELU(approximate='none')
(conv3): Conv2d(192, 64, kernel_size=(1, 1), stride=(1, 1))
)
(1): MedNeXtBlock(
(conv1): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=64)
(norm): GroupNorm(64, 64, eps=1e-05, affine=True)
(conv2): Conv2d(64, 192, kernel_size=(1, 1), stride=(1, 1))
(act): GELU(approximate='none')
(conv3): Conv2d(192, 64, kernel_size=(1, 1), stride=(1, 1))
)
(2): MedNeXtBlock(
(conv1): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=64)
(norm): GroupNorm(64, 64, eps=1e-05, affine=True)
(conv2): Conv2d(64, 192, kernel_size=(1, 1), stride=(1, 1))
(act): GELU(approximate='none')
(conv3): Conv2d(192, 64, kernel_size=(1, 1), stride=(1, 1))
)
(3): MedNeXtBlock(
(conv1): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=64)
(norm): GroupNorm(64, 64, eps=1e-05, affine=True)
(conv2): Conv2d(64, 192, kernel_size=(1, 1), stride=(1, 1))
(act): GELU(approximate='none')
(conv3): Conv2d(192, 64, kernel_size=(1, 1), stride=(1, 1))
)
)
(down_1): MedNeXtDownBlock(
(conv1): Conv2d(64, 64, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1), groups=64)
(norm): GroupNorm(64, 64, eps=1e-05, affine=True)
(conv2): Conv2d(64, 256, kernel_size=(1, 1), stride=(1, 1))
(act): GELU(approximate='none')
(conv3): Conv2d(256, 128, kernel_size=(1, 1), stride=(1, 1))
(res_conv): Conv2d(64, 128, kernel_size=(1, 1), stride=(2, 2))
)
(enc_block_2): Sequential(
(0): MedNeXtBlock(
(conv1): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=128)
(norm): GroupNorm(128, 128, eps=1e-05, affine=True)
(conv2): Conv2d(128, 512, kernel_size=(1, 1), stride=(1, 1))
(act): GELU(approximate='none')
(conv3): Conv2d(512, 128, kernel_size=(1, 1), stride=(1, 1))
)
(1): MedNeXtBlock(
(conv1): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=128)
(norm): GroupNorm(128, 128, eps=1e-05, affine=True)
(conv2): Conv2d(128, 512, kernel_size=(1, 1), stride=(1, 1))
(act): GELU(approximate='none')
(conv3): Conv2d(512, 128, kernel_size=(1, 1), stride=(1, 1))
)
(2): MedNeXtBlock(
(conv1): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=128)
(norm): GroupNorm(128, 128, eps=1e-05, affine=True)
(conv2): Conv2d(128, 512, kernel_size=(1, 1), stride=(1, 1))
(act): GELU(approximate='none')
(conv3): Conv2d(512, 128, kernel_size=(1, 1), stride=(1, 1))
)
(3): MedNeXtBlock(
(conv1): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=128)
(norm): GroupNorm(128, 128, eps=1e-05, affine=True)
(conv2): Conv2d(128, 512, kernel_size=(1, 1), stride=(1, 1))
(act): GELU(approximate='none')
(conv3): Conv2d(512, 128, kernel_size=(1, 1), stride=(1, 1))
)
(4): MedNeXtBlock(
(conv1): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=128)
(norm): GroupNorm(128, 128, eps=1e-05, affine=True)
(conv2): Conv2d(128, 512, kernel_size=(1, 1), stride=(1, 1))
(act): GELU(approximate='none')
(conv3): Conv2d(512, 128, kernel_size=(1, 1), stride=(1, 1))
)
(5): MedNeXtBlock(
(conv1): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=128)
(norm): GroupNorm(128, 128, eps=1e-05, affine=True)
(conv2): Conv2d(128, 512, kernel_size=(1, 1), stride=(1, 1))
(act): GELU(approximate='none')
(conv3): Conv2d(512, 128, kernel_size=(1, 1), stride=(1, 1))
)
(6): MedNeXtBlock(
(conv1): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=128)
(norm): GroupNorm(128, 128, eps=1e-05, affine=True)
(conv2): Conv2d(128, 512, kernel_size=(1, 1), stride=(1, 1))
(act): GELU(approximate='none')
(conv3): Conv2d(512, 128, kernel_size=(1, 1), stride=(1, 1))
)
(7): MedNeXtBlock(
(conv1): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=128)
(norm): GroupNorm(128, 128, eps=1e-05, affine=True)
(conv2): Conv2d(128, 512, kernel_size=(1, 1), stride=(1, 1))
(act): GELU(approximate='none')
(conv3): Conv2d(512, 128, kernel_size=(1, 1), stride=(1, 1))
)
)
(down_2): MedNeXtDownBlock(
(conv1): Conv2d(128, 128, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1), groups=128)
(norm): GroupNorm(128, 128, eps=1e-05, affine=True)
(conv2): Conv2d(128, 512, kernel_size=(1, 1), stride=(1, 1))
(act): GELU(approximate='none')
(conv3): Conv2d(512, 256, kernel_size=(1, 1), stride=(1, 1))
(res_conv): Conv2d(128, 256, kernel_size=(1, 1), stride=(2, 2))
)
(enc_block_3): Sequential(
(0): MedNeXtBlock(
(conv1): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=256)
(norm): GroupNorm(256, 256, eps=1e-05, affine=True)
(conv2): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1))
(act): GELU(approximate='none')
(conv3): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1))
)
(1): MedNeXtBlock(
(conv1): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=256)
(norm): GroupNorm(256, 256, eps=1e-05, affine=True)
(conv2): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1))
(act): GELU(approximate='none')
(conv3): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1))
)
(2): MedNeXtBlock(
(conv1): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=256)
(norm): GroupNorm(256, 256, eps=1e-05, affine=True)
(conv2): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1))
(act): GELU(approximate='none')
(conv3): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1))
)
(3): MedNeXtBlock(
(conv1): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=256)
(norm): GroupNorm(256, 256, eps=1e-05, affine=True)
(conv2): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1))
(act): GELU(approximate='none')
(conv3): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1))
)
(4): MedNeXtBlock(
(conv1): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=256)
(norm): GroupNorm(256, 256, eps=1e-05, affine=True)
(conv2): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1))
(act): GELU(approximate='none')
(conv3): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1))
)
(5): MedNeXtBlock(
(conv1): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=256)
(norm): GroupNorm(256, 256, eps=1e-05, affine=True)
(conv2): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1))
(act): GELU(approximate='none')
(conv3): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1))
)
(6): MedNeXtBlock(
(conv1): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=256)
(norm): GroupNorm(256, 256, eps=1e-05, affine=True)
(conv2): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1))
(act): GELU(approximate='none')
(conv3): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1))
)
(7): MedNeXtBlock(
(conv1): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=256)
(norm): GroupNorm(256, 256, eps=1e-05, affine=True)
(conv2): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1))
(act): GELU(approximate='none')
(conv3): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1))
)
)
(down_3): MedNeXtDownBlock(
(conv1): Conv2d(256, 256, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1), groups=256)
(norm): GroupNorm(256, 256, eps=1e-05, affine=True)
(conv2): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1))
(act): GELU(approximate='none')
(conv3): Conv2d(1024, 512, kernel_size=(1, 1), stride=(1, 1))
(res_conv): Conv2d(256, 512, kernel_size=(1, 1), stride=(2, 2))
)
(bottleneck): Sequential(
(0): MedNeXtBlock(
(conv1): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=512)
(norm): GroupNorm(512, 512, eps=1e-05, affine=True)
(conv2): Conv2d(512, 2048, kernel_size=(1, 1), stride=(1, 1))
(act): GELU(approximate='none')
(conv3): Conv2d(2048, 512, kernel_size=(1, 1), stride=(1, 1))
)
(1): MedNeXtBlock(
(conv1): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=512)
(norm): GroupNorm(512, 512, eps=1e-05, affine=True)
(conv2): Conv2d(512, 2048, kernel_size=(1, 1), stride=(1, 1))
(act): GELU(approximate='none')
(conv3): Conv2d(2048, 512, kernel_size=(1, 1), stride=(1, 1))
)
(2): MedNeXtBlock(
(conv1): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=512)
(norm): GroupNorm(512, 512, eps=1e-05, affine=True)
(conv2): Conv2d(512, 2048, kernel_size=(1, 1), stride=(1, 1))
(act): GELU(approximate='none')
(conv3): Conv2d(2048, 512, kernel_size=(1, 1), stride=(1, 1))
)
(3): MedNeXtBlock(
(conv1): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=512)
(norm): GroupNorm(512, 512, eps=1e-05, affine=True)
(conv2): Conv2d(512, 2048, kernel_size=(1, 1), stride=(1, 1))
(act): GELU(approximate='none')
(conv3): Conv2d(2048, 512, kernel_size=(1, 1), stride=(1, 1))
)
(4): MedNeXtBlock(
(conv1): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=512)
(norm): GroupNorm(512, 512, eps=1e-05, affine=True)
(conv2): Conv2d(512, 2048, kernel_size=(1, 1), stride=(1, 1))
(act): GELU(approximate='none')
(conv3): Conv2d(2048, 512, kernel_size=(1, 1), stride=(1, 1))
)
(5): MedNeXtBlock(
(conv1): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=512)
(norm): GroupNorm(512, 512, eps=1e-05, affine=True)
(conv2): Conv2d(512, 2048, kernel_size=(1, 1), stride=(1, 1))
(act): GELU(approximate='none')
(conv3): Conv2d(2048, 512, kernel_size=(1, 1), stride=(1, 1))
)
(6): MedNeXtBlock(
(conv1): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=512)
(norm): GroupNorm(512, 512, eps=1e-05, affine=True)
(conv2): Conv2d(512, 2048, kernel_size=(1, 1), stride=(1, 1))
(act): GELU(approximate='none')
(conv3): Conv2d(2048, 512, kernel_size=(1, 1), stride=(1, 1))
)
(7): MedNeXtBlock(
(conv1): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=512)
(norm): GroupNorm(512, 512, eps=1e-05, affine=True)
(conv2): Conv2d(512, 2048, kernel_size=(1, 1), stride=(1, 1))
(act): GELU(approximate='none')
(conv3): Conv2d(2048, 512, kernel_size=(1, 1), stride=(1, 1))
)
)
(up_3): MedNeXtUpBlock(
(conv1): ConvTranspose2d(512, 512, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1), groups=512)
(norm): GroupNorm(512, 512, eps=1e-05, affine=True)
(conv2): Conv2d(512, 2048, kernel_size=(1, 1), stride=(1, 1))
(act): GELU(approximate='none')
(conv3): Conv2d(2048, 256, kernel_size=(1, 1), stride=(1, 1))
(res_conv): ConvTranspose2d(512, 256, kernel_size=(1, 1), stride=(2, 2))
)
(dec_block_3): Sequential(
(0): MedNeXtBlock(
(conv1): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=256)
(norm): GroupNorm(256, 256, eps=1e-05, affine=True)
(conv2): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1))
(act): GELU(approximate='none')
(conv3): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1))
)
(1): MedNeXtBlock(
(conv1): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=256)
(norm): GroupNorm(256, 256, eps=1e-05, affine=True)
(conv2): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1))
(act): GELU(approximate='none')
(conv3): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1))
)
(2): MedNeXtBlock(
(conv1): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=256)
(norm): GroupNorm(256, 256, eps=1e-05, affine=True)
(conv2): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1))
(act): GELU(approximate='none')
(conv3): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1))
)
(3): MedNeXtBlock(
(conv1): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=256)
(norm): GroupNorm(256, 256, eps=1e-05, affine=True)
(conv2): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1))
(act): GELU(approximate='none')
(conv3): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1))
)
(4): MedNeXtBlock(
(conv1): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=256)
(norm): GroupNorm(256, 256, eps=1e-05, affine=True)
(conv2): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1))
(act): GELU(approximate='none')
(conv3): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1))
)
(5): MedNeXtBlock(
(conv1): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=256)
(norm): GroupNorm(256, 256, eps=1e-05, affine=True)
(conv2): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1))
(act): GELU(approximate='none')
(conv3): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1))
)
(6): MedNeXtBlock(
(conv1): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=256)
(norm): GroupNorm(256, 256, eps=1e-05, affine=True)
(conv2): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1))
(act): GELU(approximate='none')
(conv3): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1))
)
(7): MedNeXtBlock(
(conv1): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=256)
(norm): GroupNorm(256, 256, eps=1e-05, affine=True)
(conv2): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1))
(act): GELU(approximate='none')
(conv3): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1))
)
)
(up_2): MedNeXtUpBlock(
(conv1): ConvTranspose2d(256, 256, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1), groups=256)
(norm): GroupNorm(256, 256, eps=1e-05, affine=True)
(conv2): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1))
(act): GELU(approximate='none')
(conv3): Conv2d(1024, 128, kernel_size=(1, 1), stride=(1, 1))
(res_conv): ConvTranspose2d(256, 128, kernel_size=(1, 1), stride=(2, 2))
)
(dec_block_2): Sequential(
(0): MedNeXtBlock(
(conv1): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=128)
(norm): GroupNorm(128, 128, eps=1e-05, affine=True)
(conv2): Conv2d(128, 512, kernel_size=(1, 1), stride=(1, 1))
(act): GELU(approximate='none')
(conv3): Conv2d(512, 128, kernel_size=(1, 1), stride=(1, 1))
)
(1): MedNeXtBlock(
(conv1): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=128)
(norm): GroupNorm(128, 128, eps=1e-05, affine=True)
(conv2): Conv2d(128, 512, kernel_size=(1, 1), stride=(1, 1))
(act): GELU(approximate='none')
(conv3): Conv2d(512, 128, kernel_size=(1, 1), stride=(1, 1))
)
(2): MedNeXtBlock(
(conv1): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=128)
(norm): GroupNorm(128, 128, eps=1e-05, affine=True)
(conv2): Conv2d(128, 512, kernel_size=(1, 1), stride=(1, 1))
(act): GELU(approximate='none')
(conv3): Conv2d(512, 128, kernel_size=(1, 1), stride=(1, 1))
)
(3): MedNeXtBlock(
(conv1): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=128)
(norm): GroupNorm(128, 128, eps=1e-05, affine=True)
(conv2): Conv2d(128, 512, kernel_size=(1, 1), stride=(1, 1))
(act): GELU(approximate='none')
(conv3): Conv2d(512, 128, kernel_size=(1, 1), stride=(1, 1))
)
(4): MedNeXtBlock(
(conv1): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=128)
(norm): GroupNorm(128, 128, eps=1e-05, affine=True)
(conv2): Conv2d(128, 512, kernel_size=(1, 1), stride=(1, 1))
(act): GELU(approximate='none')
(conv3): Conv2d(512, 128, kernel_size=(1, 1), stride=(1, 1))
)
(5): MedNeXtBlock(
(conv1): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=128)
(norm): GroupNorm(128, 128, eps=1e-05, affine=True)
(conv2): Conv2d(128, 512, kernel_size=(1, 1), stride=(1, 1))
(act): GELU(approximate='none')
(conv3): Conv2d(512, 128, kernel_size=(1, 1), stride=(1, 1))
)
(6): MedNeXtBlock(
(conv1): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=128)
(norm): GroupNorm(128, 128, eps=1e-05, affine=True)
(conv2): Conv2d(128, 512, kernel_size=(1, 1), stride=(1, 1))
(act): GELU(approximate='none')
(conv3): Conv2d(512, 128, kernel_size=(1, 1), stride=(1, 1))
)
(7): MedNeXtBlock(
(conv1): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=128)
(norm): GroupNorm(128, 128, eps=1e-05, affine=True)
(conv2): Conv2d(128, 512, kernel_size=(1, 1), stride=(1, 1))
(act): GELU(approximate='none')
(conv3): Conv2d(512, 128, kernel_size=(1, 1), stride=(1, 1))
)
)
(up_1): MedNeXtUpBlock(
(conv1): ConvTranspose2d(128, 128, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1), groups=128)
(norm): GroupNorm(128, 128, eps=1e-05, affine=True)
(conv2): Conv2d(128, 384, kernel_size=(1, 1), stride=(1, 1))
(act): GELU(approximate='none')
(conv3): Conv2d(384, 64, kernel_size=(1, 1), stride=(1, 1))
(res_conv): ConvTranspose2d(128, 64, kernel_size=(1, 1), stride=(2, 2))
)
(dec_block_1): Sequential(
(0): MedNeXtBlock(
(conv1): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=64)
(norm): GroupNorm(64, 64, eps=1e-05, affine=True)
(conv2): Conv2d(64, 192, kernel_size=(1, 1), stride=(1, 1))
(act): GELU(approximate='none')
(conv3): Conv2d(192, 64, kernel_size=(1, 1), stride=(1, 1))
)
(1): MedNeXtBlock(
(conv1): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=64)
(norm): GroupNorm(64, 64, eps=1e-05, affine=True)
(conv2): Conv2d(64, 192, kernel_size=(1, 1), stride=(1, 1))
(act): GELU(approximate='none')
(conv3): Conv2d(192, 64, kernel_size=(1, 1), stride=(1, 1))
)
(2): MedNeXtBlock(
(conv1): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=64)
(norm): GroupNorm(64, 64, eps=1e-05, affine=True)
(conv2): Conv2d(64, 192, kernel_size=(1, 1), stride=(1, 1))
(act): GELU(approximate='none')
(conv3): Conv2d(192, 64, kernel_size=(1, 1), stride=(1, 1))
)
(3): MedNeXtBlock(
(conv1): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=64)
(norm): GroupNorm(64, 64, eps=1e-05, affine=True)
(conv2): Conv2d(64, 192, kernel_size=(1, 1), stride=(1, 1))
(act): GELU(approximate='none')
(conv3): Conv2d(192, 64, kernel_size=(1, 1), stride=(1, 1))
)
)
(up_0): MedNeXtUpBlock(
(conv1): ConvTranspose2d(64, 64, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1), groups=64)
(norm): GroupNorm(64, 64, eps=1e-05, affine=True)
(conv2): Conv2d(64, 128, kernel_size=(1, 1), stride=(1, 1))
(act): GELU(approximate='none')
(conv3): Conv2d(128, 32, kernel_size=(1, 1), stride=(1, 1))
(res_conv): ConvTranspose2d(64, 32, kernel_size=(1, 1), stride=(2, 2))
)
(dec_block_0): Sequential(
(0): MedNeXtBlock(
(conv1): Conv2d(32, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=32)
(norm): GroupNorm(32, 32, eps=1e-05, affine=True)
(conv2): Conv2d(32, 64, kernel_size=(1, 1), stride=(1, 1))
(act): GELU(approximate='none')
(conv3): Conv2d(64, 32, kernel_size=(1, 1), stride=(1, 1))
)
(1): MedNeXtBlock(
(conv1): Conv2d(32, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=32)
(norm): GroupNorm(32, 32, eps=1e-05, affine=True)
(conv2): Conv2d(32, 64, kernel_size=(1, 1), stride=(1, 1))
(act): GELU(approximate='none')
(conv3): Conv2d(64, 32, kernel_size=(1, 1), stride=(1, 1))
)
(2): MedNeXtBlock(
(conv1): Conv2d(32, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=32)
(norm): GroupNorm(32, 32, eps=1e-05, affine=True)
(conv2): Conv2d(32, 64, kernel_size=(1, 1), stride=(1, 1))
(act): GELU(approximate='none')
(conv3): Conv2d(64, 32, kernel_size=(1, 1), stride=(1, 1))
)
)
(out_0): OutBlock(
(conv_out): ConvTranspose2d(32, 13, kernel_size=(1, 1), stride=(1, 1))
)
(out_1): OutBlock(
(conv_out): ConvTranspose2d(64, 13, kernel_size=(1, 1), stride=(1, 1))
)
(out_2): OutBlock(
(conv_out): ConvTranspose2d(128, 13, kernel_size=(1, 1), stride=(1, 1))
)
(out_3): OutBlock(
(conv_out): ConvTranspose2d(256, 13, kernel_size=(1, 1), stride=(1, 1))
)
(out_4): OutBlock(
(conv_out): ConvTranspose2d(512, 13, kernel_size=(1, 1), stride=(1, 1))
)
)
Traceback (most recent call last):
File "/mnt/d/project/Deeplearning/MITrans/mednext/MedNextV1.py", line 431, in
print(network(x)[0].shape)
File "/home/allen/miniconda3/envs/P39/lib/python3.9/site-packages/torch/nn/modules/module.py", line 1739, in _wrapped_call_impl
return self._call_impl(*args, **kwargs)
File "/home/allen/miniconda3/envs/P39/lib/python3.9/site-packages/torch/nn/modules/module.py", line 1750, in _call_impl
return forward_call(*args, **kwargs)
File "/mnt/d/project/Deeplearning/MITrans/mednext/MedNextV1.py", line 290, in forward
x = self.stem(x)
File "/home/allen/miniconda3/envs/P39/lib/python3.9/site-packages/torch/nn/modules/module.py", line 1739, in _wrapped_call_impl
return self._call_impl(*args, **kwargs)
File "/home/allen/miniconda3/envs/P39/lib/python3.9/site-packages/torch/nn/modules/module.py", line 1750, in _call_impl
return forward_call(*args, **kwargs)
File "/home/allen/miniconda3/envs/P39/lib/python3.9/site-packages/torch/nn/modules/conv.py", line 554, in forward
return self._conv_forward(input, self.weight, self.bias)
File "/home/allen/miniconda3/envs/P39/lib/python3.9/site-packages/torch/nn/modules/conv.py", line 549, in _conv_forward
return F.conv2d(
RuntimeError: Expected 3D (unbatched) or 4D (batched) input to conv2d, but got input of size: [1, 1, 128, 128, 128]

Process finished with exit code 1

In addition, after I use create_mednextv1_medium(1, 1, 3, False).to(device) for training, the size of the input tensor is [8, 1, 256, 256]. The following error is reported:

/home/allen/miniconda3/envs/P39/bin/python /mnt/d/project/Deeplearning/MITrans/train_test.py
Traceback (most recent call last):
File "/mnt/d/project/Deeplearning/MITrans/train_test.py", line 73, in
outputs = model(batch_img)
File "/home/allen/miniconda3/envs/P39/lib/python3.9/site-packages/torch/nn/modules/module.py", line 1739, in _wrapped_call_impl
return self._call_impl(*args, **kwargs)
File "/home/allen/miniconda3/envs/P39/lib/python3.9/site-packages/torch/nn/modules/module.py", line 1750, in _call_impl
return forward_call(*args, **kwargs)
File "/mnt/d/project/Deeplearning/MITrans/mednext/MedNextV1.py", line 290, in forward
x = self.stem(x)
File "/home/allen/miniconda3/envs/P39/lib/python3.9/site-packages/torch/nn/modules/module.py", line 1739, in _wrapped_call_impl
return self._call_impl(*args, **kwargs)
File "/home/allen/miniconda3/envs/P39/lib/python3.9/site-packages/torch/nn/modules/module.py", line 1750, in _call_impl
return forward_call(*args, **kwargs)
File "/home/allen/miniconda3/envs/P39/lib/python3.9/site-packages/torch/nn/modules/conv.py", line 725, in forward
return self._conv_forward(input, self.weight, self.bias)
File "/home/allen/miniconda3/envs/P39/lib/python3.9/site-packages/torch/nn/modules/conv.py", line 720, in _conv_forward
return F.conv3d(
RuntimeError: Given groups=1, weight of size [32, 1, 1, 1, 1], expected input[1, 8, 1, 256, 256] to have 1 channels, but got 8 channels instead

Process finished with exit code 1

At present, MedNeXt is basically unable to be used for normal training. May I ask whether MedNeXt can be further improved so that it can support 2 - dimensional tensor input (for example: [8, 3, 128, 128] represents a batch size of 8 and a 2 - dimensional picture with 3 channels), and at the same time support 3 - dimensional tensor input (for example: [8, 3, 128, 128, 128] represents a batch size of 8 and a 3 - dimensional image with 3 channels)?

Looking forward to your reply. Thank you very much.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions