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
示例#2
0
          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))