Hello!
I have a project where I have many different models, therefore I would like to store the structure in a config file. I wrote this code to generate a model, it works quite well:
layers = [
    {"type": "Conv2d", "in_channels": 1, "out_channels": 6, "kernel_size": 3},
    {"type": "ReLU"},
    {"type": "Conv2d", "in_channels": 6, "out_channels": 16, "kernel_size": 3},
    {"type": "ReLU"},
    {"type": "Flatten"},
    {"type": "Linear", "in_features": 16 * 6 * 6, "out_features": 120},
    {"type": "ReLU"},
    {"type": "Linear", "in_features": 120, "out_features": 84},
    {"type": "ReLU"},
    {"type": "Linear", "in_features": 84, "out_features": 10},
    ]

def build_model(config):
    layer_list = []
    for layer_config in config:
        layer_type = layer_config.pop('type')
        layer_list.append(getattr(torch.nn, layer_type)(**layer_config))
    return nn.Sequential(*layer_list)

model = build_model(layers)

However I have codes that needs “deconvolution network” and for those, I need a view/reshape layer. I am not sure how to handle that without too much trouble. Does someone have an idea ?
Examples of layers I would like to use:
layers = [
    {"type": "Linear", "in_features": 10, "out_features": 1024},
    {"type": "ReLU"},
    #  ? x = x.view(-1, 16, 64)
    {"type": "Conv1d", "in_channels": 16, "out_channels": 32, "kernel_size": 3},
    {"type": "ReLU"},
    {"type": "Conv1d", "in_channels": 32, "out_channels": 64, "kernel_size": 3},
    {"type": "ReLU"}
    # ...
    ]

Thanks!