def load_metaparameters(param_dict=None):
    """
    Parameters for bayesian optimizer. Default dictionary listed and updated by param_dict.

    The default contains some redundancy dependent on the architecture.
    If the generic architecture is used, the 'dense_X' values are ignored.
    If not, the values of 'dense_units' should match the number of layers in the architecture and the above will be used.
    """
    metaparams = {'architecture': 'nn',
                  'dense_0': 200,
                  'dense_1': 100,
                  'dense_2': 50,
                  'dense_3': 25,
                  'dense_units': 3,
                  'nodes': 2300,
                  'nodes_roc': -1.,
                  'dense_dropout': 0.0,
                  'log_lr': -3,
                  'log_beta_1': -1,
                  'log_beta_2': -3
                  }
    if param_dict:
        metaparams.update(param_dict)
    metaparams['dense_units'] = int(metaparams['dense_units'])
    return metaparams