Issue
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.
Solution
The names are given by whats inside the parentheses. Be aware that ModuleList is a list type, so the modules within are addressed by index.
The pytorch forums are usually quite good for that. This post describes how you can access and alter a layer, but it similarly applies to register a forward hook. For instance, in your case
model.encoders[0].basic_module
will get you the basic_module in the first encoder.
Answered By - Dirk N.
0 comments:
Post a Comment
Note: Only a member of this blog may post a comment.