def METHOD_NAME(self, module, pre_name=""):
    """Get the intermediate layers of the model.
    The method will get some intermediate layers of the model which might
    be useful for neuron coverage computation. Some layers such as dropout
    layers are excluded empirically.
    Returns
    -------
    list of torch.nn.modules
        Intermediate layers of the model.
    """
    intermediate_layers = []
    for name, submodule in module.named_children():
        full_name = f"{pre_name}.{name}"
        if len(submodule._modules) > 0:
            intermediate_layers += self.METHOD_NAME(submodule, full_name)
        else:
            # if 'Dropout' in str(submodule.type) or 'BatchNorm' in str(submodule.type) or 'ReLU' in str(submodule.type):
            if 'Dropout' in str(submodule.type) or 'ReLU' in str(submodule.type) or 'Linear' in str(submodule.type) or 'Pool' in str(submodule.type):
                    continue
            if self.intermedia_mode == "layer":
                if type(self._model).__name__ == "ResNet":
                    if not full_name[-5:] == "1.bn2":
                        continue
            else:
                ...
            intermediate_layers.append(submodule)
            # print(full_name, )
    return intermediate_layers