Hi all,
I am currently working on a project for which I require to simulate the behaviour of some device using neural networks. I would like to have some flexibility in the architecture that is used for simulating the device, so I have created a function that allows me to do that inside the model:
class DeviceModel(nn.Module):
    def __init__(self, custom_dictionary):
        super(DeviceModel, self).__init__()
        self.build_my_structure(custom_dictionary) 

    def build_my_structure(self, custom_dictionary):
        hidden_sizes = custom_dictionary["hidden_sizes"]
        input_layer = nn.Linear(custom_dictionary["D_in"], hidden_sizes[0])
        activation = self._get_activation(custom_dictionary["activation"])   
        output_layer = nn.Linear(hidden_sizes[-1], custom_dictionary["D_out"])        
        modules = [input_layer, activation]

        hidden_layers = zip(hidden_sizes[:-1], hidden_sizes[1:])
        for h_1, h_2 in hidden_layers:
            hidden_layer = nn.Linear(h_1, h_2)
            modules.append(hidden_layer)
            modules.append(activation)

        modules.append(output_layer)
        self.model = nn.Sequential(*modules)

    def forward(self, x):
        return self.model(x)

What would be the best practice here to load the model? Should I save it directly using torch.save, or should I save the state_dictionary. If the second way is the best, I have to create the model from scratch using the original configs dictionary and then load the state_dict, how should can I store both of them together?
Perhaps, I am just using the library wrong, and there are other ways of creating a model dynamically? Or there is simply no support for this?
Thank you very much in advance. Any help would be much appreciated.