How do I convert `nn.ModuleList()` to ordinary python `list`?

I have

ModuleList(
          (conv1): ConvKXBN(
            (conv1): Conv2d(32, 64, kernel_size=(1, 1), stride=(1, 1), bias=False)
            (bn1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
          )
          (conv2): ConvKXBN(
            (conv1): Conv2d(64, 64, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1), bias=False)
            (bn1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
          )
          (conv3): ConvKXBN(
            (conv1): Conv2d(64, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)
            (bn1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
          )
)

I want -

[ConvKXBN(
  (conv1): Conv2d(32, 32, kernel_size=(1, 1), stride=(1, 1), bias=False)
  (bn1): BatchNorm2d(32, eps=1e-05, momentum=1.0, affine=True, track_running_stats=True)
), ConvKXBN(
  (conv1): Conv2d(32, 32, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1), bias=False)
  (bn1): BatchNorm2d(32, eps=1e-05, momentum=1.0, affine=True, track_running_stats=True)
), ConvKXBN(
  (conv1): Conv2d(32, 128, kernel_size=(1, 1), stride=(1, 1), bias=False)
  (bn1): BatchNorm2d(128, eps=1e-05, momentum=1.0, affine=True, track_running_stats=True)
)]

Creating a list directly should work:

modules = nn.ModuleList([
    nn.Linear(1, 2),
    nn.Linear(2, 3),
    nn.Linear(3, 4)
])
print(modules)
# ModuleList(
#   (0): Linear(in_features=1, out_features=2, bias=True)
#   (1): Linear(in_features=2, out_features=3, bias=True)
#   (2): Linear(in_features=3, out_features=4, bias=True)
# )

l = list(modules)
print(l)
# [Linear(in_features=1, out_features=2, bias=True), Linear(in_features=2, out_features=3, bias=True), Linear(in_features=3, out_features=4, bias=True)]
1 Like