def predict(input_line): print(f"\n > {input_line}") with torch.no_grad(): line_tensor = line_to_tensor(input_line) hidden = rnn.init_hidden() for i in range(line_tensor.size()[0]): output, hidden = rnn(line_tensor[i], hidden) guess = category_from_output(output) print(guess)
def random_training_example(category_lines, all_categories): def random_choice(a): random_idx = random.randint(0, len(a) - 1) return a[random_idx] category = random_choice(all_categories) line = random_choice(category_lines[category]) category_tensor = torch.tensor([all_categories.index(category)], dtype=torch.long) line_tensor = line_to_tensor(line) return category, line, category_tensor, line_tensor
def predict(line, n_predictions=3): _, all_categories = assemble_data(DATA_FILES) output = evaluate(line_to_tensor(line), rnn) topv, topi = output.data.topk(n_predictions, 1, True) predictions = [] print(line) for i in range(n_predictions): value = topv[0][i] category_index = topi[0][i] print('(%.2f) %s' % (value, all_categories[category_index])) predictions.append([value, all_categories[category_index]]) return predictions
def get_predication(name): print(f"\n> {name} ") with torch.no_grad(): line_tensor = line_to_tensor(name) hidden = rnn.init_hidden() for i in range(line_tensor.size()[0]): output, hidden = rnn(line_tensor[i], hidden) guess = category_from_output(output) print(guess) return guess
n_categories = len(all_categories) n_hidden = 128 rnn = RNN(N_LETTERS, n_hidden, n_categories) #One step input_tensor = letter_to_tensor('A') hidden_tensor = rnn.init_hidden() output, next_hidden = rnn(input_tensor, hidden_tensor) #print(output.size()) #print(next_hidden.size()) # whole sequence/name input_tensor = line_to_tensor('Albert') hidden_tensor = rnn.init_hidden() output, next_hidden = rnn(input_tensor[0], hidden_tensor) #print(output.size()) #print(next_hidden.size()) def category_from_output(output): category_idx = torch.argmax(output).item() return all_categories[category_idx] print(category_from_output(output)) criterion = nn.NLLLoss()
category_lines, all_categories = load_data() n_categories = len(all_categories) n_hidden = 128 rnn = RNN(N_LETTERS, n_hidden, n_categories) # One step input_tensor = letter_to_tensor("A") hidden_tensor = rnn.init_hidden() output, next_hidden = rnn(input_tensor, hidden_tensor) print(output.size()) print(next_hidden.size()) # Whole sequence name input_tensor = line_to_tensor("Albert") hidden_tensor = rnn.init_hidden() output, next_hidden = rnn(input_tensor[0], hidden_tensor) print(output.size()) print(next_hidden.size()) def category_from_output(output): category_idx = torch.argmax(output).item() return all_categories[category_idx] print(category_from_output(output)) criterion = nn.NLLLoss()