Так что, если вы хотите проверить свою языковую модель, генерируя случайный текст - просто выберите случайный токен в качестве первого слова.После подачи этого случайного слова модель сгенерирует вывод, тогда это слово, которое вы только что сгенерировали, будет вашим следующим вводом, который вы введете в модель и т. Д.
Вот пример кода, как это может выглядеть:
# Test the model
with torch.no_grad():
with open('sample.txt', 'w') as f:
# Set intial hidden ane cell states
state = (torch.zeros(num_layers, 1, hidden_size).to(device),
torch.zeros(num_layers, 1, hidden_size).to(device))
# Select one word id randomly
prob = torch.ones(vocab_size)
input = torch.multinomial(prob, num_samples=1).unsqueeze(1).to(device)
for i in range(num_samples):
# Forward propagate RNN
output, state = model(input, state)
# Sample a word id
prob = output.exp()
word_id = torch.multinomial(prob, num_samples=1).item()
# Fill input with sampled word id for the next time step
input.fill_(word_id)
# File write
word = corpus.dictionary.idx2word[word_id]
word = '\n' if word == '<eos>' else word + ' '
f.write(word)
if (i+1) % 100 == 0:
print('Sampled [{}/{}] words and save to {}'.format(i+1, num_samples, 'sample.txt'))
Полный код также для модели можно найти здесь .
Возможно, вам придется немного изменить код, чтобы онработает для вашей модели.