def METHOD_NAME(self, config):
    item_emb_size = config.get("hyper_parameters.item_emb_size", 64)
    cat_emb_size = config.get("hyper_parameters.cat_emb_size", 64)
    position_emb_size = config.get("hyper_parameters.position_emb_size",
                                   64)
    act = config.get("hyper_parameters.act", "sigmoid")
    is_sparse = config.get("hyper_parameters.is_sparse", False)
    # significant for speeding up the training process
    use_DataLoader = config.get("hyper_parameters.use_DataLoader", False)
    item_count = config.get("hyper_parameters.item_count", 63001)
    user_count = config.get("hyper_parameters.user_count", 192403)
    cat_count = config.get("hyper_parameters.cat_count", 801)
    position_count = config.get("hyper_parameters.position_count", 5001)
    n_encoder_layers = config.get("hyper_parameters.n_encoder_layers", 1)
    d_model = config.get("hyper_parameters.d_model", 96)
    d_key = config.get("hyper_parameters.d_key", None)
    d_value = config.get("hyper_parameters.d_value", None)
    n_head = config.get("hyper_parameters.n_head", None)
    dropout_rate = config.get("hyper_parameters.dropout_rate", 0.0)
    postprocess_cmd = config.get("hyper_parameters.postprocess_cmd", "da")
    preprocess_cmd = config.get("hyper_parameters.postprocess_cmd", "n")
    prepostprocess_dropout = config.get(
        "hyper_parameters.prepostprocess_dropout", 0.0)
    d_inner_hid = config.get("hyper_parameters.d_inner_hid", 512)
    relu_dropout = config.get("hyper_parameters.relu_dropout", 0.0)
    layer_sizes = config.get("hyper_parameters.fc_sizes", None)
    bst_model = net.BSTLayer(
        user_count, item_emb_size, cat_emb_size, position_emb_size, act,
        is_sparse, use_DataLoader, item_count, cat_count, position_count,
        n_encoder_layers, d_model, d_key, d_value, n_head, dropout_rate,
        postprocess_cmd, preprocess_cmd, prepostprocess_dropout,
        d_inner_hid, relu_dropout, layer_sizes)
    return bst_model