I have the following model in PyTorch:
UNet3D(
(encoders): ModuleList(
(0): Encoder(
(basic_module): DoubleConv(
(SingleConv1): SingleConv(
(groupnorm): GroupNorm(1, 5, eps=1e-05, affine=True)
(conv): Conv3d(5, 32, kernel_size=(3, 3, 3), stride=(1, 1, 1), padding=(1, 1, 1), bias=False)
(ReLU): ReLU(inplace=True)
)
(SingleConv2): SingleConv(
(groupnorm): GroupNorm(8, 32, eps=1e-05, affine=True)
(conv): Conv3d(32, 64, kernel_size=(3, 3, 3), stride=(1, 1, 1), padding=(1, 1, 1), bias=False)
(ReLU): ReLU(inplace=True)
)
)
)
(1): Encoder(
(pooling): MaxPool3d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
(basic_module): DoubleConv(
(SingleConv1): SingleConv(
(groupnorm): GroupNorm(8, 64, eps=1e-05, affine=True)
(conv): Conv3d(64, 64, kernel_size=(3, 3, 3), stride=(1, 1, 1), padding=(1, 1, 1), bias=False)
(ReLU): ReLU(inplace=True)
)
(SingleConv2): SingleConv(
(groupnorm): GroupNorm(8, 64, eps=1e-05, affine=True)
(conv): Conv3d(64, 128, kernel_size=(3, 3, 3), stride=(1, 1, 1), padding=(1, 1, 1), bias=False)
(ReLU): ReLU(inplace=True)
)
)
)
(2): Encoder(
(pooling): MaxPool3d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
(basic_module): DoubleConv(
(SingleConv1): SingleConv(
(groupnorm): GroupNorm(8, 128, eps=1e-05, affine=True)
(conv): Conv3d(128, 128, kernel_size=(3, 3, 3), stride=(1, 1, 1), padding=(1, 1, 1), bias=False)
(ReLU): ReLU(inplace=True)
)
(SingleConv2): SingleConv(
(groupnorm): GroupNorm(8, 128, eps=1e-05, affine=True)
(conv): Conv3d(128, 256, kernel_size=(3, 3, 3), stride=(1, 1, 1), padding=(1, 1, 1), bias=False)
(ReLU): ReLU(inplace=True)
)
)
)
Could someone please tell me what is the name of different layers here? For example, "encoders (0)"?. I want to extract intermediate layer output from model, so I need the name of each layer.