相关文件

关注小编,私信小编领取哟!
当然别忘了一件三连哟~~

公众号:Python日志
可以关注小编公众号,会不定时的发布一下Python小技巧,还有很多资源可以免费领取哟!!
源码领取:加Python学习交流群:773162165 可以领取哟

开发工具

Python版本:3.7.8
相关模块:
pytorch模块;
pyqt5模块;
numpy模块;
pyttsx3模块;
以及一些python自带的模块。

环境搭建

安装Python并添加到环境变量,pip安装需要的相关模块即可。
想用GPU完成模型训练的读者请自行搜索相关的网络教程配置CUDA环境,相关文件中会提供小编训练好的模型,因此你也可以直接下载使用。

效果展示

视频效果

Python基于神经网络自动生成“藏头诗”项目!

图片效果

原理简介

这里我们用网上别人整理好的57580首唐诗作为训练数据集,先加载一下数据:

'''创建dataloader'''
def CreateDataloader(tang_resource_path, batch_size=16, num_workers=2):poems = np.load(tang_resource_path, allow_pickle=True)dataset = poems['data']index2word = poems['index2word'].item()word2index = poems['word2index'].item()dataset = torch.from_numpy(dataset)dataloader = torch.utils.data.DataLoader(dataset, batch_size=batch_size, shuffle=True, num_workers=num_workers,)return dataloader, index2word, word2index

然后用pytorch定义一个简单的生成模型:

'''诗歌生成模型'''
class Poem(nn.Module):def __init__(self, vocabulary_dim, embedding_dim=256, hidden_dim=512, num_layers=3):super(Poem, self).__init__()self.vocabulary_dim = vocabulary_dim self.embedding_dim = embedding_dimself.hidden_dim = hidden_dimself.num_layers = num_layers# 定义一些层self.embedding = nn.Embedding(vocabulary_dim, embedding_dim)self.lstm = nn.LSTM(embedding_dim, hidden_dim, num_layers=num_layers)self.linear = nn.Linear(hidden_dim, vocabulary_dim)'''forward'''def forward(self, inputs, hidden=None):seq_len, batch_size = inputs.size()if hidden is None:hidden = inputs.data.new(self.num_layers, batch_size, self.hidden_dim).fill_(0).float(), inputs.data.new(self.num_layers, batch_size, self.hidden_dim).fill_(0).float()h_0, c_0 = hiddenembeds = self.embedding(inputs)outputs, hidden = self.lstm(embeds, (h_0, c_0))outputs = self.linear(outputs.view(seq_len * batch_size, -1))return outputs, hidden

然后写个脚本训练一下:


'''藏头诗生成器'''
class Trainer():def __init__(self, cmd_args):self.cmd_args = cmd_args'''run'''def run(self):# 初始化use_cuda = torch.cuda.is_available()rootdir = os.path.split(os.path.abspath(__file__))[0]touchdir(self.cmd_args.ckptdir)logger_handle = Logger(os.path.join(self.cmd_args.ckptdir, self.cmd_args.logfilepath))# 创建数据集tang_resource_path = os.path.join(rootdir, 'resources/tang.npz')dataloader, index2word, word2index = CreateDataloader(tang_resource_path, self.cmd_args.batchsize, self.cmd_args.numworkers)# 创建模型model = Poem(len(word2index))if use_cuda: model = model.cuda()# 创建优化器optimizer = torch.optim.Adam(model.parameters(), lr=self.cmd_args.lr)# 创建损失函数criterion = nn.CrossEntropyLoss()# 开始训练for epoch in range(1, self.cmd_args.epochs+1):for batch_idx, data in enumerate(dataloader):optimizer.zero_grad()data = data.long().transpose(1, 0).contiguous()if use_cuda: data = data.cuda()inputs, targets = data[:-1, :], data[1:, :]outputs = model(inputs)[0]loss = criterion(outputs, targets.view(-1))if (batch_idx + 1) % 10 == 0:logger_handle.info(f'[Epoch]:{epoch}/{self.cmd_args.epochs}, [Batch]:{batch_idx+1}/{len(dataloader)}, [Loss]:{loss.item()}')loss.backward()optimizer.step()if epoch % self.cmd_args.saveinterval == 0 or epoch == self.cmd_args.epochs:torch.save(model.state_dict(), os.path.join(self.cmd_args.ckptdir, f'epoch_{epoch}.pth'))

好啦,大概的就是这样子实现的啦,源码领取看相关文件哟

【Python项目】Python利用神经网络自动生成的“藏头诗”生成器 | 附带源码相关推荐

  1. Python PaddleNLP实现自动生成虎年藏头诗

    这篇文章主要介绍了利用Python PaddleNLP实现自动生成虎年藏头诗功能,文中的示例代码讲解详细,感兴趣的同学可以跟随小编一起试一试.Python编程学习资料点击免费领取 目录 1.paddl ...

  2. 一键生成藏头诗小程序源码

    简介: 简单的小程序源码,后台须调用天行api的接口 上线步骤: 1.百度注册天行数据,完成邮箱验证 2.找到藏头诗生成api,点击申请即可出现key页面,初期是免费调用额度的,绑定微信增加10000 ...

  3. python藏头诗_如何使用Python做一个藏头诗生成器?

    藏头诗是可以利用Python做出来呃,具体是如何做的呃,下面随融跃小编一起了解一下! 爬取诗句 在百度搜索"我开头的诗句",可以进入到百度汉语的页面,该页面会显示所有以" ...

  4. python藏头诗生成器_GitHub - chenjiahui/Chinese_poem_generator: 唐诗、宋词生成器,有详细说明...

    Chinese_poem_generator 唐诗宋词生成器,MC胖虎,使用LSTM完成,先看几个demo: 一首藏头诗刀山火海送给大家! 胖虎学诗,会对偶,用典故,能作出边塞.田园.离别等多种风格的 ...

  5. python藏头诗生成器_GitHub - songyifan427/Chinese_poem_generator: 唐诗、宋词生成器,有详细说明...

    Chinese_poem_generator 唐诗宋词生成器,MC胖虎,使用LSTM完成,先看几个demo: 一首藏头诗刀山火海送给大家! 胖虎学诗,会对偶,用典故,能作出边塞.田园.离别等多种风格的 ...

  6. 深度学习项目一: keras实现歌词的自动生成 (含数据和所需源码)

    数据集下载:点我下载数据集 我们实现的是歌词的自动生成. 主要看我在代码中的注释..注释的很详细,不懂可以留言. 1:我们加载所需要的模块,这里的模块都是比较常用的模块 from keras.mode ...

  7. Python爬取腾讯动漫全站漫画详细教程(附带源码)

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者:merlin& PS:如有需要Python学习资料的小伙伴可 ...

  8. python文本处理入门:44行代码写一个简单的藏头诗生成器

    想必最近大家家庭群里最近都会看到这么一张图: 一惊,这什么玩意儿???后来一搜会发现里面不同的诗句来自于不同的古诗,嘛,这不是很好玩的一件事情吗?这次我们使用Github的唐诗宋词dataset:ht ...

  9. python输出一首诗_用Python自动生成藏头诗

    本文首发于公众号「老肥码码码」 前几天老肥给大家介绍了有意思的藏头诗,今天我们就来自己根据输入语句实现自动生成藏头藏尾诗吧. 整个诗句生成的逻辑是这样的,先根据输入语句爬取符合要求的诗句(来自百度汉语 ...

  10. Python藏头诗创作教程

    1.首先我们要从网上用爬虫爬取古诗 这里我们用urllib库来进行爬虫,然后用re和beautifulsoup来进行解析 爬取的网站是https://so.gushiwen.org/mingju/ 然 ...

最新文章

  1. Java局部变量final
  2. aspose-cells 表合并
  3. 转 让NET C# 程序独立运行(脱离 .NET Framework运行,绿色运行) 未验证
  4. ASP.NET Core 2.1中基于角色的授权
  5. 最快60秒完成新冠病毒核酸对比 阿里云向社会免费开放基因计算服务
  6. 2005级计算机系本二班专业知识大赛
  7. 爬虫3 requests基础之 乱码编码问题
  8. (38)FPGA面试技能提升篇(C/C++、questasim仿真工具)
  9. CSS环绕球体的旋转文字-3D效果
  10. linux进程tss和ldt,x86体系下linux中的任务切换与TSS
  11. ubuntu -- 安装最新版的nodejs
  12. gulp错误GulpUglifyError: unable to minify JavaScript解决
  13. Linux架设DNS服务器(ChinaITLab.com 搜集整理)
  14. 经常使用的几种OCR文档扫描工具|无水印|避免智商税
  15. html全部颜色代码大全,html代码大全(基础使用代码)(颜色代码完整版)
  16. 2020 知来者之可追
  17. 如何使用NFC读卡器读取NFC卡片的UID
  18. 12、Kanzi插件——创建Kanzi Engine插件的方法
  19. 2.2.1 hadoop体系之离线计算-mapreduce分布式计算-mapreduce架构概念
  20. 大学生实习证明怎么获得?

热门文章

  1. vsto mysql_VSTO–Visio | 学步园
  2. matlab差分模型求解,有限差分法求解偏微分方程MATLAB
  3. 计算机无法获取正常的ip地址,教你轻松解决Win7系统经常获取不到IP地址问题
  4. IDEA中使用JUnit4(单元测试框架)超详细!
  5. 在微信公众平台做HTML 5游戏的一些经验
  6. 微信小程序——聊天小程序(从搭建到结束)
  7. android 连线题实现 自定义view  画线
  8. 极简jmeter使用教程
  9. Win7系统能用一键装机的方式安装win10吗?
  10. Win10系统隐藏磁盘