def quora_dataset_config7(is_debug, output_log=None):
    from model.self_attention_model import PreprocessWrapper
    from read_data.quora_question_pair.load_data import load_parsed_quora_data
    train, valid, test, embedding_matrix, character_size, word_pad_id, character_pad_id = \
        load_parsed_quora_data(debug=is_debug,
                               word_vector_name="glove_300d",
                               n_gram=1)
    from model.feed_forward_network import FFNWithCrossCompare
    return {
        "model_fn": FFNWithCrossCompare,
        "model_dict": {
            "word_embedding": embedding_matrix,
        },
        "pre_process_module_fn": PreprocessWrapper,
        "pre_process_module_dict": {
            "pad_idx": word_pad_id,
            "character_pad_idx": character_pad_id,
        },
        "data": [train, valid, test],
        "batch_size": 128,
        "train_loss": BCELoss,
        "clip_norm": None,
        "name": "FFN_try",
        "optimizer": optim.Adam,
        "need_pad": True,
        "optimizer_dict": {"betas": (0.9, 0.999), "weight_decay": 3e-7, },
        "epcohes": 80,
        "lr": 1e-3,
        "evaluate_object_list": [SequenceBinaryClassExactMatch(gpu_index=get_gpu_index())],
        "epoch_ratio": 0.25,
    }
def quora_dataset_config5(is_debug, output_log=None):
    from model.self_attention_model import PreprocessWrapper
    from read_data.quora_question_pair.load_data import load_parsed_quora_data
    train, valid, test, embedding_matrix, character_size, word_pad_id, character_pad_id = \
        load_parsed_quora_data(debug=is_debug,
                               word_vector_name="glove_300d",
                               n_gram=1)
    from qanet.qanet import QANet
    return {
        "model_fn": QANet,
        "model_dict": {
            "word_embedding_matrix": embedding_matrix, "char_embedding_matrix": None,
            "params": {

                "word_embed_dim": 300,

                "highway_n_layers": 2,

                "hidden_size": 128,

                "embed_encoder_resize_kernel_size": 7,
                "embed_encoder_resize_pad": 3,

                "embed_encoder_n_blocks": 1,
                "embed_encoder_n_conv": 4,
                "embed_encoder_kernel_size": 7,
                "embed_encoder_pad": 3,
                "embed_encoder_conv_type": "depthwise_separable",
                "embed_encoder_with_self_attn": False,
                "embed_encoder_n_heads": 8,

                "model_encoder_n_blocks": 7,
                "model_encoder_n_conv": 2,
                "model_encoder_kernel_size": 7,
                "model_encoder_pad": 3,
                "model_encoder_conv_type": "depthwise_separable",
                "model_encoder_with_self_attn": False,
                "model_encoder_n_heads": 8,

                "batch_size": 32,
            }
        },
        "pre_process_module_fn": PreprocessWrapper,
        "pre_process_module_dict": {
            "pad_idx": word_pad_id,
            "character_pad_idx": character_pad_id,
        },
        "data": [train, valid, test],
        "batch_size": 64,
        "train_loss": BCELoss,
        "clip_norm": None,
        "name": "qa_net",
        "optimizer": optim.Adam,
        "need_pad": True,
        "optimizer_dict": {"betas": (0.8, 0.999), "weight_decay": 3e-7, },
        "epcohes": 80,
        "lr": 0.001,
        "evaluate_object_list": [SequenceBinaryClassExactMatch(gpu_index=get_gpu_index())],
        "epoch_ratio": 0.25,
    }
def quora_dataset_config3(is_debug, output_log=None):
    from model.self_attention_model import SelfAttentionPairModel, PreprocessWrapper
    from read_data.quora_question_pair.load_data import load_parsed_quora_data
    train, valid, test, embedding_matrix, character_size, word_pad_id, character_pad_id = \
        load_parsed_quora_data(debug=is_debug,
                               word_vector_name="fasttext",
                               n_gram=1)
    return {
        "model_fn": SelfAttentionPairModel,
        "model_dict": {
            "word_embedding": embedding_matrix,
            "character_number": character_size,
            "character_embedding_dim": 600,
            "character_n_filters": 200,
            "character_kernel_size": 5,
            "character_padding": 2,
            "self_attention_layer": 5,
        },
        "pre_process_module_fn": PreprocessWrapper,
        "pre_process_module_dict": {
            "pad_idx": word_pad_id,
            "character_pad_idx": character_pad_id,
        },
        "data": [train, valid, test],
        "batch_size": 8,
        "train_loss": BCELoss,
        "clip_norm": 10,
        "name": "sequence_graph_encoder_decoder_for_method_name",
        "optimizer": optim.Adam,
        "need_pad": True,
        "optimizer_dict": {"betas": (0.8, 0.999), "weight_decay": 3e-7, },
        "epcohes": 80,
        "lr": 1e-4,
        "evaluate_object_list": [SequenceBinaryClassExactMatch(gpu_index=get_gpu_index())],
    }
def quora_dataset_config1(is_debug, output_log=None):
    from model.sentence_pair_graph import SequenceGraphModel, PreprocessWrapper
    from read_data.quora_question_pair.load_data import load_parsed_quora_data
    train, valid, test, embedding_matrix, character_size, word_pad_id, character_pad_id = \
        load_parsed_quora_data(debug=is_debug,
                               word_vector_name="glove_300d",
                               n_gram=1)
    return {
        "model_fn": SequenceGraphModel,
        "model_dict": {
            "word_embedding": embedding_matrix,
            "character_number": character_size,
            "character_embedding_dim": 16,
            "character_n_filters": 32,
            "character_kernel_size": 5,
            "character_padding": 2,
            "n_link_type": 3,
            "hidden_state_size": 200,
            "n_dynamic_link_layer": 2,
            "n_fix_graph": 1,
            "graph_itr": 5,
            "n_classes": 2,
            "summary_node": False,
            "tie_weight": False,
        },
        "pre_process_module_fn": PreprocessWrapper,
        "pre_process_module_dict": {
            "pad_idx": word_pad_id,
            "character_pad_idx": character_pad_id,
            "summary_node": True,
        },
        "data": [train, valid, test],
        "batch_size": 8,
        "train_loss": BCELoss,
        "clip_norm": 10,
        "name": "sequence_graph_encoder_decoder_for_method_name",
        "optimizer": optim.Adam,
        "need_pad": True,
        "optimizer_dict": {"betas": (0.8, 0.999), "weight_decay": 3e-7, },
        "epcohes": 80,
        "lr": 1e-4,
        "evaluate_object_list": [SequenceBinaryClassExactMatch(gpu_index=get_gpu_index())],
    }
def quora_dataset_config4(is_debug, output_log=None):
    from model.self_attention_model import PreprocessWrapper
    from model.graph_cluster_model import GraphClusterModel
    from read_data.quora_question_pair.load_data import load_parsed_quora_data
    train, valid, test, embedding_matrix, character_size, word_pad_id, character_pad_id = \
        load_parsed_quora_data(debug=is_debug,
                               word_vector_name="glove_300d",
                               n_gram=1)
    return {
        "model_fn": GraphClusterModel,
        "model_dict": {
            "word_embedding": embedding_matrix,
            "character_number": character_size,
            "character_embedding_dim": 16,
            "character_n_filters": 32,
            "character_kernel_size": 5,
            "character_padding": 2,
            "hidden_size": 128, "conv_type": "depthwise_separable",
            "resize_kernel_size": 7, "resize_pad_size": 3,
            "n_encoder_conv_layer": 2, "encoder_kernel_size": 7, "encoder_padding": 3,
            "n_self_attention_heads": 4, "route_number": 3, "n_capsules": 32,
            "capsules_dim": 128, "n_compare_layer": 2, "n_layer_output_conv": 2,
            "n_layer_output_feedforward": 3, "hidden_size_output_feedforward": 128, "n_classes": 2, "dropout": 0.2
        },
        "pre_process_module_fn": PreprocessWrapper,
        "pre_process_module_dict": {
            "pad_idx": word_pad_id,
            "character_pad_idx": character_pad_id,
        },
        "data": [train, valid, test],
        "batch_size": 16,
        "train_loss": BCELoss,
        "clip_norm": None,
        "name": "sequence_graph_encoder_decoder_for_method_name",
        "optimizer": optim.Adam,
        "need_pad": True,
        "optimizer_dict": {"betas": (0.8, 0.999), "weight_decay": 3e-7, },
        "epcohes": 80,
        "lr": 1e-2,
        "evaluate_object_list": [SequenceBinaryClassExactMatch(gpu_index=get_gpu_index())],
    }