예제 #1
0
print("Test model", config.model)
model = Transformer(p.vocab, model_file_path=config.save_path, is_eval=False)
# get persona map
filename = 'data/ConvAI2/test_persona_map'
with open(filename, 'rb') as f:
    persona_map = pickle.load(f)

#generate
iterations = 11
weights_original = deepcopy(model.state_dict())
tasks = p.get_personas('test')
for per in tqdm(tasks):
    num_of_dialog = p.get_num_of_dialog(persona=per, split='test')
    for val_dial_index in range(num_of_dialog):
        train_iter, val_iter = p.get_data_loader(persona=per,
                                                 batch_size=config.batch_size,
                                                 split='test',
                                                 fold=val_dial_index)
        persona = []
        for ppp in persona_map[per]:
            persona += ppp
        persona = list(set(persona))
        do_learning(model,
                    train_iter,
                    val_iter,
                    iterations=iterations,
                    persona=persona)
        model.load_state_dict(
            {name: weights_original[name]
             for name in weights_original})
예제 #2
0
파일: CMAML.py 프로젝트: zyDotwei/CMAML
 elif meta_iteration == 10:
     m = "select"
 else:
     m = "selective_training"
 print(m)
 shuffle(tasks)
 for k in range(steps):
     st = k * meta_batch_size
     ed = st + meta_batch_size
     if ed > len(tasks):
         ed = len(tasks)
     batch_loss = 0
     weights_original = deepcopy(meta_net.state_dict())
     for i in range(st, ed):
         per = tasks[i]
         train_iter, val_iter = p.get_data_loader(
             persona=per, batch_size=config.batch_size, split='train')
         v_loss, v_ppl = do_evaluation(meta_net, val_iter)
         train_loss_before.append(math.exp(v_loss))
         # Update fast nets
         if m != "select":
             val_loss, v_ppl = do_learning_fix_step(
                 meta_net,
                 train_iter,
                 val_iter,
                 iterations=config.meta_iteration,
                 mode=m,
                 task=per)
         else:
             val_loss, v_ppl = do_learning_fix_step(meta_net,
                                                    train_iter,
                                                    val_iter,