def Main(vocab, vocab_inv): i = 0 arret = False # peut-être mis à True par le programme (étape 3) contexte = None # préparation GRU enc = Encoder(len(vocab), 100, 100, 2, 'cuda', vocab[pad]) dec = Decoder(len(vocab), 100, 100, 2, 'cuda', vocab[pad], vocab[sos], vocab[eos], vocab[unk]) enc.to('cuda') dec.to('cuda') # chargement des poids path_enc = "encoder_9.pkl" path_dec = "decoder_9.pkl" encoder_state = torch.load(path_enc) decoder_state = torch.load(path_dec) enc.load_states(encoder_state) enc.eval() dec.load_states(dict(decoder_state)) dec.eval() # paramétrage de la taille de la prédiction taille = int(input("nombre de mots prédis à la fois ? : ")) while (not arret): phrase = takeInput(i) exit_c, contexte = callGRU(enc, dec, phrase, vocab, contexte, taille) sortie = posttreatment(exit_c, vocab_inv) # sortie = "David Albert Huffman est un petit garçon de 10 ans des plus intelligents. Cependant, son monde cours à sa perte lorsque Poupoune décide de s'emparer de l'Europe, alors en pleine crise politique, pour y imposer son monde rose et fleurissant.Avec son ami Lamy, David va devoir lutter contre des adversaires redoutables pour sauver le monde, entrer au MIT et repousser la plus grande menace du Siècle (pour le moment) pour rétablir l'équilibre dans le rapport de Force." #test enchaînement printResult(sortie) # contexte = exit_c i += 1
tst_tgt_p = pickle.load(open('data/tst_tgt_p.pkl', 'rb')) l_trn_src = pickle.load(open('data/l_trn_src.pkl', 'rb')) trn_src_p = pickle.load(open('data/trn_src_p.pkl', 'rb')) l_trn_tgt = pickle.load(open('data/l_trn_tgt.pkl', 'rb')) trn_tgt_p = pickle.load(open('data/trn_tgt_p.pkl', 'rb')) tst_src_t = torch.LongTensor(tst_src_p) tst_tgt_t = torch.LongTensor(tst_tgt_p) trn_src_t = torch.LongTensor(trn_src_p) trn_tgt_t = torch.LongTensor(trn_tgt_p) enc = Encoder(len(vocab), 100, 100, 2, 'cuda', vocab[pad]) dec = Decoder(len(vocab), 100, 100, 2, 'cuda', vocab[pad], vocab[sos], vocab[eos], vocab[unk]) enc.to('cuda') dec.to('cuda') opt_enc = torch.optim.Adam(enc.parameters()) opt_dec = torch.optim.Adam(dec.parameters()) n_batch = len(trn_src_p) // batch_size for e in range(epochs): enc.train() dec.train() epoch_loss = 0 for i in range(n_batch): opt_enc.zero_grad() opt_dec.zero_grad() lengths = torch.LongTensor(l_trn_src[batch_size * i:batch_size * (i + 1)])