pytorch之诗词生成6--eval

2024-03-16 10:28
文章标签 生成 pytorch 诗词 eval

本文主要是介绍pytorch之诗词生成6--eval,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

先上代码:


import tensorflow as tf
from dataset import tokenizer
import settings
import utils# 加载训练好的模型
model = tf.keras.models.load_model(r"E:\best_model.h5")
# 随机生成一首诗
print(utils.generate_random_poetry(tokenizer, model))
# 给出部分信息的情况下,随机生成剩余部分
print(utils.generate_random_poetry(tokenizer, model, s='深山夕照深秋雨'))
# 生成藏头诗
print(utils.generate_acrostic(tokenizer, model, head='深山夕照深秋雨'))

我们需要做的工作已经做完了,模型也已经训练好了,剩下的就是我们把我们的模型放到实际应用之中去了。

先看:

model = tf.keras.models.load_model(r"E:\best_model.h5")

这段代码使用了tensorflow中的tf.keras.models.load_model函数,加载一个预训练好的模型,这种加载预训练模型的例子很常见,在我们之前提到的风格迁移项目中,我们就加载预训练模型对我们的图片特征进行提取。

  •  tf.keras.models是tensorflow中用于构建和训练神经网络模型的模块。
  • load_model是tf.keras.models模块中的一个函数,用于从磁盘中加载保存好的预训练模型。我们的参数是一个模型文件或文件名,使用r前缀表示字符串是一个原始字符串,可以包含反斜杠\而无需进行转义。

这段代码的作用是将预训练模型加载到变量model中,以便后续使用该模型进行古诗生成或其他任务,加载的模型可以是之前使用的TensorFlow训练得到的模型,也可以是由其他方法训练得到的模型,加载模型之后,可以使用model变量调用模型的方法和属性。(其余方法如我们在图像识别项目中使用的save_model方法,使用save_model.save函数来保存模型参数,使用save_model.load函数来加载模型参数)。

接下来就是进行古诗的生成了:

print(utils.generate_random_poetry(tokenizer, model))

只是传递分词器和我们的模型表示只进行随机的诗词生成。

print(utils.generate_random_poetry(tokenizer, model, s='深山夕照深秋雨'))

除上述传递的参数之外,额外传递s表示传递第一句,会跟着第一句往后进行诗词的生成,在这里,由于我们使用的是循环神经网络(RNN) ,所以我们后面生成的诗词与我们提供的第一句是有很强的关联性的。

print(utils.generate_acrostic(tokenizer, model, head='深山夕照深秋雨'))

最后我们传递的参数改成藏头诗,我们传递的head将被分成一个个词,并对每个词进行相应的生成,然后将得到的结果组合在一起,形成完整的诗词,当然,我们对每个词进行生成的时候不止简单的考虑到我们head所提供的第一个词,而是考虑到前面已经生成的词。这样使全文就有一定的关联性。

最后我们来演示我们的模型效果:

我们给定的第一句是“深山夕照深秋雨”,包括藏头也是“深山夕照深秋雨”。

总体来看效果还是不错的,我们继续生成一首:

有些同学可能会发愁找不到相关的诗词资源,在这里我已经将相关资源传上去了。分别是进行诗词训练的数据集,便于同学们更加直观的感受训练过程,理解数据对深度学习的重要作用,还有预训练权重,可以直接用于模型。

至于训练数据,请查看我的文章http://t.csdnimg.cn/mF4lm。

这篇关于pytorch之诗词生成6--eval的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/815174

相关文章

IDEA自动生成注释模板的配置教程

《IDEA自动生成注释模板的配置教程》本文介绍了如何在IntelliJIDEA中配置类和方法的注释模板,包括自动生成项目名称、包名、日期和时间等内容,以及如何定制参数和返回值的注释格式,需要的朋友可以... 目录项目场景配置方法类注释模板定义类开头的注释步骤类注释效果方法注释模板定义方法开头的注释步骤方法注

pytorch自动求梯度autograd的实现

《pytorch自动求梯度autograd的实现》autograd是一个自动微分引擎,它可以自动计算张量的梯度,本文主要介绍了pytorch自动求梯度autograd的实现,具有一定的参考价值,感兴趣... autograd是pytorch构建神经网络的核心。在 PyTorch 中,结合以下代码例子,当你

Python如何自动生成环境依赖包requirements

《Python如何自动生成环境依赖包requirements》:本文主要介绍Python如何自动生成环境依赖包requirements问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑... 目录生成当前 python 环境 安装的所有依赖包1、命令2、常见问题只生成当前 项目 的所有依赖包1、

在PyCharm中安装PyTorch、torchvision和OpenCV详解

《在PyCharm中安装PyTorch、torchvision和OpenCV详解》:本文主要介绍在PyCharm中安装PyTorch、torchvision和OpenCV方式,具有很好的参考价值,... 目录PyCharm安装PyTorch、torchvision和OpenCV安装python安装PyTor

MySQL中动态生成SQL语句去掉所有字段的空格的操作方法

《MySQL中动态生成SQL语句去掉所有字段的空格的操作方法》在数据库管理过程中,我们常常会遇到需要对表中字段进行清洗和整理的情况,本文将详细介绍如何在MySQL中动态生成SQL语句来去掉所有字段的空... 目录在mysql中动态生成SQL语句去掉所有字段的空格准备工作原理分析动态生成SQL语句在MySQL

pytorch之torch.flatten()和torch.nn.Flatten()的用法

《pytorch之torch.flatten()和torch.nn.Flatten()的用法》:本文主要介绍pytorch之torch.flatten()和torch.nn.Flatten()的用... 目录torch.flatten()和torch.nn.Flatten()的用法下面举例说明总结torch

Java利用docx4j+Freemarker生成word文档

《Java利用docx4j+Freemarker生成word文档》这篇文章主要为大家详细介绍了Java如何利用docx4j+Freemarker生成word文档,文中的示例代码讲解详细,感兴趣的小伙伴... 目录技术方案maven依赖创建模板文件实现代码技术方案Java 1.8 + docx4j + Fr

Java编译生成多个.class文件的原理和作用

《Java编译生成多个.class文件的原理和作用》作为一名经验丰富的开发者,在Java项目中执行编译后,可能会发现一个.java源文件有时会产生多个.class文件,从技术实现层面详细剖析这一现象... 目录一、内部类机制与.class文件生成成员内部类(常规内部类)局部内部类(方法内部类)匿名内部类二、

使用Jackson进行JSON生成与解析的新手指南

《使用Jackson进行JSON生成与解析的新手指南》这篇文章主要为大家详细介绍了如何使用Jackson进行JSON生成与解析处理,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. 核心依赖2. 基础用法2.1 对象转 jsON(序列化)2.2 JSON 转对象(反序列化)3.

java中使用POI生成Excel并导出过程

《java中使用POI生成Excel并导出过程》:本文主要介绍java中使用POI生成Excel并导出过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录需求说明及实现方式需求完成通用代码版本1版本2结果展示type参数为atype参数为b总结注:本文章中代码均为