def nmt(): if request.method == 'POST': text = request.form['sent'] EMBED_SIZE = 256 HIDDEN_SIZE = 512 DROPOUT_RATE = 0.2 BATCH_SIZE = 256 NUM_TRAIN_STEPS = 10 VOCAB = Vocab.load('VOCAB_FILE') vocab_inp_size = len(VOCAB.src) + 1 vocab_tar_size = len(VOCAB.tgt) + 1 model = NMT(vocab_inp_size, vocab_tar_size, EMBED_SIZE, HIDDEN_SIZE, BATCH_SIZE) sample_hidden = model.encoder.initialize_hidden_state() sample_output, sample_hidden = model.encoder( tf.random.uniform((BATCH_SIZE, 1)), sample_hidden) sample_decoder_output, _, _ = model.decoder( tf.random.uniform((BATCH_SIZE, 1)), sample_hidden, sample_output) model.load_weights('es_en') pred = decode_sentence(model, text, VOCAB) return render_template('home.html', result=pred)
dataset = dataset.batch(BATCH_SIZE, drop_remainder=True) print("deleting files not required...") del src_sents, tgt_sents, src_pad, tgt_pad print("beginning training...") train(dataset, EMBED_SIZE, HIDDEN_SIZE, DROPOUT_RATE, BATCH_SIZE, NUM_TRAIN_STEPS, BUFFER_SIZE, steps_per_epoch, vocab_inp_size, vocab_tar_size, VOCAB) print("training complete!") if args['decode']: print('reading vocabulary file: %s' % args['--vocab']) VOCAB = Vocab.load(args['--vocab']) vocab_inp_size = len(VOCAB.src) + 1 vocab_tar_size = len(VOCAB.tgt) + 1 print('restoring pre-trained model') model = NMT(vocab_inp_size, vocab_tar_size, EMBED_SIZE, HIDDEN_SIZE, BATCH_SIZE) sample_hidden = model.encoder.initialize_hidden_state() sample_output, sample_hidden = model.encoder( tf.random.uniform((BATCH_SIZE, 1)), sample_hidden) sample_decoder_output, _, _ = model.decoder( tf.random.uniform((BATCH_SIZE, 1)), sample_hidden, sample_output) model.load_weights(args['--model-file']) print("beginning decoding...") decode(model, args['--sent-file'], VOCAB, 0)