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。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/542474.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Numpy】练习题100道(51-75题)

#学习笔记# Git-hub链接 目录 1.题目列表 2.题解 1.题目列表 51. 创建一个表示位置(x,y)和颜色(r,g,b)的结构化数组(★★☆) 52. 考虑一个形状为(100,2)的随机向量,…

【测试开发学习历程】Docker入门

前言: Linux命令到上一篇博文就可以告一个段落了哦 ~ ~ 今天初步学习在测试中很重要的东西:Docker 目录 1 Docker概述 1.1 Docker产生的背景? 1.2 Docker的理念? 1.3 Docker的优势 1.3.1 传统的虚拟机 1.3.2 容器化虚拟技…

FPGA静态时序分析与约束(四)、时序约束

系列文章目录 FPGA静态时序分析与约束(一)、理解亚稳态 FPGA静态时序分析与约束(二)、时序分析 FPGA静态时序分析与约束(三)、读懂vivado时序报告 文章目录 系列文章目录前言一、什么是时序约束&#xff1…

星闪Nearlink与蓝牙的不同

背景 2022 年 11 月 4 日,华为成立近两年的星闪联盟发布了自己的通讯标准——星闪无线短距离通信 1.0,引领着无线通讯领域的新潮流。该标准包括基础接入和低功耗接入两种模式,为设备提供了灵活多样的连接方式,灵活的信道设计让星…

找准方向选CRM客户管理系统!2023年排行榜推荐

本文将为大家带来2023有哪些好用CRM客户管理系统?CRM系统排行榜基于品牌知名度、功能、产品实力、系统稳定性、用户体量等多重因素考量。其中Zoho CRM、红圈CRM等产品市场表现优异入选此次榜单。 1.Zoho CRM 公司成立时间:1996年 Zoho(卓豪…

JDBC连接数据库小白级教程

虽然MyBatis等ORM(Object-Relational Mapping)框架在Java开发中变得非常流行,并且简化了数据库操作的复杂性,但学习JDBC仍然具有一定的重要性: 基础理解:学习JDBC可以帮助你深入理解数据库连接和操作的底层…

C语言练习题一

一、输入一行字符&#xff0c;分别统计出其中英文字母、空格、数字和其他字符的个数。 #include<stdio.h> int main () {char c;int letter0,number0,space0,other0;printf("请输入一行字符:\n");while((cgetchar())!\n){if((c>a&&c<z)||(c>…

鸿蒙Harmony应用开发—ArkTS声明式开发(容器组件:Navigator)

路由容器组件&#xff0c;提供路由跳转能力。 说明&#xff1a; 该组件从API Version 7开始支持。后续版本如有新增内容&#xff0c;则采用上角标单独标记该内容的起始版本。 子组件 可以包含子组件。 接口 Navigator(value?: {target: string, type?: NavigationType}) …

JavaScript进阶:js的一些学习笔记-this指向,call,apply,bind,防抖,节流

文章目录 1. this指向1. 箭头函数 this的指向 2. 改变this的指向1. call()2. apply()3. bind() 3. 防抖和节流1. 防抖2. 节流 1. this指向 1. 箭头函数 this的指向 箭头函数默认帮我们绑定外层this的值&#xff0c;所以在箭头函数中this的值和外层的this是一样的箭头函数中的…

TSINGSEE青犀AI智能分析网关V4拍照检测算法介绍及其场景应用

随着科技的飞速发展&#xff0c;防止拍摄屏幕的AI检测算法已经成为了一个备受关注的话题。未经允许拍摄屏幕的行为往往涉及到版权、隐私和安全等问题。为了解决这一问题&#xff0c;防止拍摄屏幕的AI检测算法也因此诞生。这种算法的应用场景广泛&#xff0c;如在线教育、企业培…

JVM-5

1.选择垃圾收集器 如果你的堆大小不是很大&#xff08;比如 100MB &#xff09;&#xff0c;选择串行收集器一般是效率最高的。 参数&#xff1a; -XX:UseSerialGC 。如果你的应用运行在单核的机器上&#xff0c;或者你的虚拟机核数只有单核&#xff0c;选择串行收集器依然是合…

linux用git拉取我云端以及git处理冲突

拉取后切换一个跟云端分支(dev)一样的 git branch --set-upstream-toorigin/dev dev 之后就同步了 A在dev分支写了iii,提交 B在dev分支写了hhh,提交,冲突 怎么修改,B把云端的拉下来,随便改改就行