コード例 #1
0
    train_step = rvae.trainer(optimizer)
    # validate = rvae.validater()

    ce_result = []
    kld_result = []
    # training_data = batch_loader.training_data('train')
    # validation_data = batch_loader.training_data('valid')

    for iteration in range(args.num_iterations):
        print(f"-----Iteration: {iteration}-------------")
        x = 0
        bar = progressbar.ProgressBar(maxval=130001,
                                      widgets=[progressbar.Bar('=', '[', ']'), ' ', progressbar.Percentage()])
        bar.start()
        while True:
            input = batch_loader.next_batch(x, args.batch_size, "train")
            bar.update(x + 1)
            if input is None:
                break
            cross_entropy, kld, coef = train_step(iteration, input, args.use_cuda, args.dropout)
            x += args.batch_size
            if x == 64:
                seed = np.random.normal(size=[1, parameters.latent_variable_size])
                sentence, reference, result = rvae.predict(input, batch_loader, 50, seed, args.use_cuda)

                print('\n')
                print('------------SAMPLE------------')
                print('------------------------------')
                print(f'original: {sentence.encode("utf-8")}')
                print(f'reference: {reference.encode("utf-8")}')
                print(f'generated: {result.encode("utf-8")}')
コード例 #2
0
    rvae = RVAE(parameters, parameters_2)
    rvae.load_state_dict(t.load('trained_RVAE'))
    if args.use_cuda:
        rvae = rvae.cuda()

    n_best = 3
    beam_size = 10

    assert n_best <= beam_size

    for i in range(args.num_sentence):
        '''================================================== Input Encoder-1 ========================================================
        '''
        use_cuda = 1
        input = batch_loader.next_batch(1, 'valid', i)
        input = [Variable(t.from_numpy(var)) for var in input]
        input = [var.long() for var in input]
        input = [var.cuda() if use_cuda else var for var in input]

        [
            encoder_word_input, encoder_character_input, decoder_word_input,
            decoder_character_input, target
        ] = input
        ''' =================================================== Input for Encoder-2 ========================================================
        '''

        input_2 = batch_loader_2.next_batch(1, 'valid', i)
        input_2 = [Variable(t.from_numpy(var)) for var in input_2]
        input_2 = [var.long() for var in input_2]
        input_2 = [var.cuda() if use_cuda else var for var in input_2]
コード例 #3
0
                         batch_loader_2.max_seq_len,
                         batch_loader_2.words_vocab_size,
                         batch_loader_2.chars_vocab_size)
     '''=================================================================================================
     '''
 embedding = Embedding(parameters, path)
 embedding_2 = Embedding(parameters_2, path, True)
 vae, bigdecoder, docoder4 = VAE.create_lstm_vae_1()
 start_index = 0
 for iteration in range(args.num_iterations):
     if True:
         #This needs to be changed ##这一步必须保证不大于训练数据数量-每一批数据的大小,否则越界报错######################
         start_index = (start_index + 1) % (49999 - args.batch_size)
         #start_index = (start_index+args.batch_size)%149163 #计算交叉熵损失,等
         #=================================================== Input for Encoder-1,3 ========================================================
         input = batch_loader.next_batch(args.batch_size, 'train',
                                         start_index)
         input = [Variable(t.from_numpy(var)) for var in input]
         input = [var.long() for var in input]
         #input = [var.cuda() if args.use_cuda else var for var in input]
         #这里是data/train.txt,转换变成embedding,用pand补齐,
         #其中encoder_word_input, encoder_character_input是将 xo原始句输入倒过来前面加若干占位符,
         # decoder_word_input, decoder_character_input是 xo原始句加了开始符号末端补齐
         # target,结束句子后面加了结束符,target是xo原始句加结束符后面加若干占位符
         [
             encoder_word_input, encoder_character_input,
             decoder_word_input, decoder_character_input, target
         ] = input
         # =================================================== Input for Encoder-1,3 ========================================================
         ''' =================================================== Input for Encoder-2 ========================================================
         '''
         input_2 = batch_loader_2.next_batch(args.batch_size, 'train',