def predict(id_2_word, seq_length=35, batch_size=20, load_GRU=True): if load_GRU: model = GRU(200, 1500, 35, 20, 10000, 2, 0.35)#(emb_size=350, hidden_size=1500, seq_len=35 batch_size=20, vocab_size=10000, num_layers=2, dp_keep_prob=0.35) model.load_state_dict(torch.load("model\\best_GRU.pt")) model.eval() filename = "predictions\\GRU_"+ str(seq_length) + ".txt" else: model = RNN(200, 1500, 35, 20, 10000, 2, 0.35) model.load_state_dict(torch.load("model\\best_RNN.pt")) model.eval() filename = "predictions\\RNN_"+ str(seq_length) + ".txt" hidden = model.init_hidden() random_input = torch.randint(10000, (batch_size,)) samples = model.generate(random_input, hidden, seq_length, batch_size) sequence = [[" " for j in range(seq_length)] for i in range(batch_size)] for i in range(batch_size): for j in range(seq_length): sequence[i][j] = id_2_word[samples[j, i].item()] save_prediction(sequence, seq_length, filename) return sequence
hidden_size=argsdict["GRU_hidden_size"], seq_len=argsdict["seq_len"], batch_size=argsdict["batch_size"], vocab_size=vocab_size, num_layers=argsdict["GRU_num_layers"], dp_keep_prob=1) # Load the model weight rnn.load_state_dict(torch.load(args.RNN_path)) gru.load_state_dict(torch.load(args.GRU_path)) rnn.eval() gru.eval() # Initialize the hidden state hidden = [rnn.init_hidden(), gru.init_hidden()] # Set the random seed manually for reproducibility. torch.manual_seed(args.seed) # Generate the word seed using random words # in the first 100 most common words. input = torch.randint(0, 100, (args.batch_size, 1)).squeeze() for name_model, model, init_hidden in zip(["RNN", "GRU"], [rnn, gru], hidden): print("------------------------------------") print(name_model) print("------------------------------------") print_sentence(model.generate(input, init_hidden, args.seq_len)) print_sentence(model.generate(input, init_hidden, 2 * args.seq_len))