Exemplo n.º 1
0
def get_inference_model(path):
    model_train, model_encoder, model_decoder = define_nmt(
        num_words, embedding_size, hidden_size)
    try:
        print("Get inference model {}".format(path))
        model_train.load_weights(path)
    except Exception as error:
        print(error)
        print("Error trying to load checkpoint.")

    return (model_encoder, model_decoder)
    def build_member(lr, dropout):
        model, encoder_model, decoder_model = \
            define_nmt(hidden_size, embedding_size, timesteps,
                       en_vocab_size, de_vocab_size, dropout, np.power(10, lr))

        return Member(model,
                      param_names=['lr', 'dropout'],
                      tune_lr=True,
                      use_eval_metric='bleu',
                      custom_metrics={
                          'bleu':
                          lambda x, y, _: bleu_score_enc_dec(
                              encoder_model, decoder_model, x, y, batch_size)
                      })
    def build_member(lr, dropout):
        '''
        Building baseline model using lr and dropout rates passed
        in terms of parameters

        For each member we pass our parameters, tune the learning rate,
        using BLEU as our performance metric.
        '''
        model, encoder_model, decoder_model = \
            define_nmt(hidden_size, embedding_size, timesteps,
                       en_vocab_size, de_vocab_size, dropout, np.power(10, lr))

        return Member(model,
                      param_names=['lr', 'dropout'],
                      tune_lr=True,
                      use_eval_metric='bleu',
                      custom_metrics={
                          'bleu':
                          lambda x, y, _: bleu_score_enc_dec(
                              encoder_model, decoder_model, x, y, batch_size)
                      })
Exemplo n.º 4
0
    val_size = 3200
    en_train_t, en_train_v = en_train[val_size:], en_train[:val_size]
    de_train_t, de_train_v = de_train[val_size:], de_train[:val_size]

    # model parameters
    hidden_size = 96
    embedding_size = 100
    timesteps = 30

    # hyperparameters
    lr = 0.001
    dropout = 0.2

    model, encoder_model, decoder_model = define_nmt(hidden_size,
                                                     embedding_size, timesteps,
                                                     en_vocab_size,
                                                     de_vocab_size, dropout,
                                                     lr)

    train_generator = nmt_train_generator(en_train_t, de_train_t,
                                          de_vocab_size, batch_size)

    steps = en_train.shape[0] // batch_size
    eval_every = 100

    bleu_logger = BleuLogger((en_train_v, de_train_v), eval_every, batch_size,
                             de_vocab_size, encoder_model, decoder_model)

    model.fit_generator(train_generator,
                        steps_per_epoch=steps,
                        callbacks=[bleu_logger])
Exemplo n.º 5
0
    tokenizer_eng = keras.preprocessing.text.Tokenizer(oov_token='UNK')
    tokenizer_eng.fit_on_texts(eng_text)

    tokenizer_ger = keras.preprocessing.text.Tokenizer(oov_token='UNK')
    tokenizer_ger.fit_on_texts(ger_text)
    """ Getting preprocessed data """
    eng_seq, ger_seq = preprocess_data(tokenizer_eng, tokenizer_ger, eng_text,
                                       ger_text, eng_timesteps, ger_timesteps)

    eng_vocab_size = max(tokenizer_eng.index_word.keys()) + 1
    ger_vocab_size = max(tokenizer_ger.index_word.keys()) + 1
    """ Defining the full model """
    full_model, infer_enc_model, infer_dec_model = define_nmt(
        hidden_size=hidden_size,
        batch_size=batch_size,
        eng_timesteps=eng_timesteps,
        ger_timesteps=ger_timesteps,
        eng_vocab_size=eng_vocab_size,
        ger_vocab_size=ger_vocab_size)

    n_epochs = 1 if not debug else 3
    train(full_model, eng_seq, ger_seq, batch_size, n_epochs)
    """ Save model """
    if not os.path.exists(os.path.join('..', 'h5.models')):
        os.mkdir(os.path.join('..', 'h5.models'))
    full_model.save(os.path.join('..', 'h5.models', 'nmt.h5'))
    """ Index2word """
    en_index2word = dict(
        zip(en_tokenizer.word_index.values(), en_tokenizer.word_index.keys()))
    fr_index2word = dict(
        zip(fr_tokenizer.word_index.values(), fr_tokenizer.word_index.keys()))