PyTorch实现用于文本生成的循环神经网络( 二 )


PyTorch实现用于文本生成的循环神经网络文章插图
我们将可视化训练中的损失 。
【PyTorch实现用于文本生成的循环神经网络】plt.figure(figsize=(7,7))plt.title("Loss")plt.plot(all_losses)plt.xlabel("Epochs")plt.ylabel("Loss")plt.show()
PyTorch实现用于文本生成的循环神经网络文章插图
最后 , 我们将对我们的模型进行测试 , 以测试在给定起始字母表字母时生成属于语言的名称 。
max_length = 20# 类别和起始字母中的示例def sample_model(category, start_letter='A'):with torch.no_grad():# no need to track history in samplingcategory_tensor = categ_Tensor(category)input = inp_Tensor(start_letter)hidden = NameGenratorModule.initHidden()output_name = start_letterfor i in range(max_length):output, hidden = NameGenratorModule(category_tensor, input[0], hidden)topv, topi = output.topk(1)topi = topi[0][0]if topi == n_let - 1:breakelse:letter = all_let[topi]output_name += letterinput = inp_Tensor(letter)return output_name# 从一个类别和多个起始字母中获取多个样本def sample_names(category, start_letters='XYZ'):for start_letter in start_letters:print(sample_model(category, start_letter))现在 , 我们将检查样本模型 , 在给定语言和起始字母时生成名称 。
print("Italian:-")sample_names('Italian', 'BPRT')print("\nKorean:-")sample_names('Korean', 'CMRS')print("\nRussian:-")sample_names('Russian', 'AJLN')print("\nVietnamese:-")sample_names('Vietnamese', 'LMT')
PyTorch实现用于文本生成的循环神经网络文章插图
因此 , 正如我们在上面看到的 , 我们的模型已经生成了属于语言类别的名称 , 并从输入字母开始 。
参考文献:

  1. Trung Tran, “Text Generation with Pytorch”.
  2. “NLP from scratch: Generating names with a character level RNN”, PyTorch Tutorial.
  3. Francesca Paulin, “Character-Level LSTM in PyTorch”, Kaggle.