def load_model_weights_params(base_filename='models/model_',
    load_model_params=True, load_model_layers_excel=True, trainable=False,
    model_filename=None, weight_filename=None, model_params_filename=None,
    excel_filename=None, verbose=1):
    """Loads in Keras model from json file and loads weights from .h5 file.
    optional set model layer trainability to False"""
    from IPython.display import display
    from keras.models import model_from_json
    import json
    if model_filename is None:
        model_filename = base_filename + '.json'
    if weight_filename is None:
        weight_filename = base_filename + '_weights.h5'
    if model_params_filename is None:
        model_params_filename = base_filename + '_model_params.pkl'
    if excel_filename is None:
        excel_filename = base_filename + '_model_layers.xlsx'
    with open(model_filename, 'r') as json_file:
        loaded_model_json = json.loads(json_file.read())
    loaded_model = model_from_json(loaded_model_json)
    loaded_model.load_weights(weight_filename)
    print(f'Loaded {model_filename} and loaded weights from {weight_filename}.'
        )
    if trainable is False:
        for i, model_layer in enumerate(loaded_model.layers):
            loaded_model.get_layer(index=i).trainable = False
        if verbose > 0:
            print('All model.layers.trainable set to False.')
        if verbose > 1:
            print(model_layer, loaded_model.get_layer(index=i).trainable)
    if verbose > 0:
        display(loaded_model.summary())
        print('Note: Model must be compiled again to be used.')
    return_list = [loaded_model]
    if load_model_params:
        import pickle
        model_params = pickle.load(model_params_filename)
        return_list.append(model_params)
    if load_model_layers_excel:
        import pandas as pd
        df_model_layers = pd.read_excel(excel_filename)
        return_list.append(df_model_layers)
    return return_list[:]
