class Model(nn.Module):
    def __init__(self, channels):
        super(Model, self).__init__()
        self.conv11 = nn.Conv2d(in_channel, out_channel_1, kernel_size=(5, 5), bias=True, stride=2), padding='same')
        self.batch_Norm11 = nn.BatchNorm2d(out_channel_1, momentum=momentum)
        self.max_pooling1 = nn.MaxPool2d(2, stride=2)
        if some_condition:
            self.bn = nn.BatchNorm2d(n_joints+1, affine=True, momentum=0.05) 
            for joint in joint_names:
                for cond_joint in joint_dependence[joint]:
                    joint_key = joint + '_' + cond_joint
                    self.shapes = torch.nn.ModuleDict(
                    {f"{joint_key}": torch.nn.Linear(pairwise_distr_np[joint_key].shape[0], pairwise_distr_np[joint_key].shape[1], bias=False) for joint_key in joint_keys})

as you may notice here that we defined our model with two different approaches in the beginning sequentially and then with Module dict.
once we run the summary of the model only the sequential layers were shown and not the nn.Linear layers inside the Module dict or even the Moduledict as a whole. here you can see the output of the summary function.
does anyone also had experience with recursive as Param #
thank you

Screenshot (11)845×1157 136 KB