Python实现基于RNN的诗歌生成

Python_ai 基于RNN的诗歌生成实验报告 一. 关于PoetryModel类的实现 (一) 初始化: 继承nn,Module类之后

本文包含相关资料包-----> 点击直达获取<-------

Python_ai

基于RNN的诗歌生成实验报告

一. 关于PoetryModel类的实现

(一) 初始化:

继承nn.Module类之后,定义embedding模型,输入的维数为vocab_size,输出的维数为embedding_size,之后定义lstm模型,注意它的要求是两层,用num_layers = 2来表示两层,输入是embeddingdim,输出是hiddndim,最后定义线性模型,输入hiddendim输出是vocabdim,它的目的是将输出的output向量的维数映射到vocabdim维数。

(二) Forward函数,接口为input 和 hidden(初始化为0)

hidden 为两个tensor组成的元组,h0和c0.将输入input向量经过embedding后经过神经网络LSTM后,将output线性模型过滤,最后返回output和hidden

二. test 函数和 acrostic_test函数的实现

(一) test 函数实现:

将start word转化为列表,并将第一个词设置为 对应的字典索引值,然后开始进行循环,每轮开始都对它进行神经网络的预测。其中如果循环的次数小于startword的长度,诗句还在startword中,将下一个词的对应索引作为下一个输入向量,如果长度超出时,用topk将预测值最大即最有可能的对应索引取出作为下一个输入向量。最后当向量为“ ”时结束,并将最后一个删除,完成test函数过程

(二) acrostic函数实现:

首先建立空列表,设置第一个输入为 对应的字典索引值,最后开始循环,每轮将input和hidden都经过model处理,同时设定pre记录上一个单词,当上一个单词为一句话的结尾时,我们在从startword中取词作为藏头诗的开头,当藏头词全部用完时,表示这首藏头诗创作完成退出循环。如果不是结尾,则查找出现可能性最大的词,作为input,找到它对应的字典value,加入到列表当中,最后完成藏头诗。

三. 其他问题解决

(一) 如何对模型进行调试

我在处理模型的bug的过程中,不断的用print(XXX.shape)不断的输出关键向量的维数,查看维数是否匹配,因为在循环神经网络的训练过程中,维数的匹配非常重要,当维数不匹配时,锁定错误位置,及时调整。

(二) 如何提升模型训练效率,采用gpu加速

在模型定义过程中,使用代码self.device = torch.device("cuda" if torch.cuda.is_available() else "cpu")这样当电脑的gpu可用的时候,device就会被设定为cuda,同时在self.model定义时,后面加入.to(self.device)这样就可以用gpu进行加速,如果gpu不可用,那就会用cpu不会影响其他运算。

参考文献

  • 面向中文古诗的智能问答技术研究(华中师范大学·洪婕)
  • 《宋词三百首》标注语料库的构建及计量研究(南京师范大学·郝星月)
  • 逼真流数据测试集的弹性并行生成框架技术(华东师范大学·顾伶)
  • 轻量级分布式虚假信息爬虫的设计与实现(辽宁大学·韩昱)
  • 数据可视化代码自动生成工具的研究与实现(北京工业大学·刘东洋)
  • 逼真流数据测试集的弹性并行生成框架技术(华东师范大学·顾伶)
  • 基于CUDA的知识图谱嵌入并行化(西南财经大学·鲁宇星)
  • 基于Spring Boot的多用户博客系统的设计研究(青海师范大学·罗涛)
  • 面向中文古诗的智能问答技术研究(华中师范大学·洪婕)
  • 基于文本信息的可控图像生成研究(武汉纺织大学·余开元)
  • 基于生成式对抗网络的文本数据增强系统的设计与实现(北京邮电大学·丹晓东)
  • 基于对比学习的图像生成系统的设计与实现(北京邮电大学·王德鑫)
  • 中外经典诗歌信息系统设计与实现(华中师范大学·黄柏霖)
  • 基于Spring Cloud的股票简讯自动生成系统的设计与实现(北京邮电大学·张金生)
  • 个性化音乐推荐系统的设计与实现(华中科技大学·余梦琴)

本文内容包括但不限于文字、数据、图表及超链接等)均来源于该信息及资料的相关主题。发布者:源码货栈 ,原文地址:https://bishedaima.com/yuanma/35772.html

相关推荐

发表回复

登录后才能评论