【Python机器学习】循环神经网络(RNN)——对RNN进行预测

目录

有状态性

双向RNN

编码向量


如果有一个经过训练的模型,接下来就可以对其进行预测:

sample_1="""
I hate that the dismal weather had me down for so long,when will it break! Ugh,when does happiness return? The sun is blinding and the puffy clouds are too thin. I can't wait for the weekend.
"""
from keras.api.models import model_from_json
with open("simplernn_model1.json","r") as json_file:json_string=json_file.read()
model=model_from_json(json_string)
model.load_weights('simplernn_weights1.h5')vec_list=tokenize_and_vectorize([(1,sample_1)])
test_vec_list=pad_turnc(vec_list,maxlen)
test_vec=np.reshape(test_vec_list,(len(test_vec_list),maxlen,embedding_dims))
print(model.predict_classes(test_vec))

结果是负向的。

我们又有了一个可以添加到流水线中的工具,可以对可能的回复以及用户可能输入的问题或搜索进行分类。选择循环神经网络的原因之一是:与前馈网络或卷积神经网络相比,循环神经网络训练和传递新样本的成本相对较高。

对于使用RNN,要记住出现过的输入位(bit)的概念在NLP中是非常重要的。对循环神经网络来说,梯度消失通常是一个难以克服的问题,特别是在一个有如此多时刻的样本中。

有状态性

有时候,我们想要记住从一个输入样本到下一个输入样本的信息,而不仅仅是单个样本中的一个输入词条到下一个输入词条的一个时刻(词条)。在训练结束时,除了通过反向传播被编码在权重中的内容,最终的输出对网络没有影响,下一个输入将重新开始。Keras在基本RNN层提供了一个关键字参数stateful,它默认为False,如果在模型中添加sampleRNN层时将其设置为True,则最后一个样本的最后一个输出将在下一个时刻与第一个词条输入一起传递给它自己,就像在样本的中间一样。

当我们想要对一个大型的已被分割成段落或句子进行处理的文档建模时,将stateful设置为True不失为一个好主意。甚至可以使用它来对相关文档的整个语料库的含义建模。但是,我们并不希望在没有重置样本间模型状态的情况下,在不相关的文档或段落上训练有状态的RNN。同样的,如果经常打乱文本样本,则一个样本的最后几个词条与下一个样本的前几个词条没有任何关系。因此,对于打乱的文本,我们需要确保stateful参数设置为False,因为样本的顺序不能帮助模型找到合适的匹配关系。

如果传递给fit方法一个batch_size参数,则模型的有状态性将在一批中保存每个样本的输出,然后前一批中第一个样本的输出将会输入给下一批中的第一个样本,前一批中第二个样本的输出将会输入给下一批的第二个样本,以此类推。如果我们试图基于整体的某一小部分对较大的单个语料库进行建模,那么关注数据集的顺序就变得非常重要。

双向RNN

如果词之间的依存关系翻转,例如: They want to pet the dog whose fur was brown.

当读到词条“fur”时,已经遇到了“dog”,并且对它有所了解。但这个句子也包含了“狗有皮毛且毛皮是棕色的”这一信息。这些信息与之前的动作“pet”、“they”想要抚摸的事实有关、也许“they”只喜欢抚摸柔软的、棕色的东西。

人类阅读句子的方向是单向的,但当接收到新信息时,人类的大脑能够迅速回到文本前面的内容。人类可以处理那些没有按照最佳顺序呈现的信息。如果我们能允许模型在输入之间来回切换,这就是双向循环神经网络的用武之地。Keras添加了一个层包装器,它可以在必要时自动翻转输入和输出,为我们自动组装一个双向RNN:

from keras.api.models import Sequential
from keras.api.layers import SimpleRNN
from keras.api.layers import Bidirectionalnum_neurons=10
maxlen=100
embedding_dims=300model=Sequential()
model.add(Bidirectional(SimpleRNN(num_neurons,return_sequences=True,input_shape=(maxlen,embedding_dims)
)))

其基本思想是将两个RNN并排在一起,将输入像普通单向RNN的输入一样传递到其中一个RNN中,并将同样的输入从反向传递到另一个RNN中(如下图)。然后,在每个时刻将这两个网络的输出拼接到一起作为另一个网络中对应(相同输入词条)时刻的输入。在获取输入最后一个时刻的输出后,将其与在反向网络的第一个时刻的由相同输入词条生成的输出拼接起来。

有了这些工具,不仅可以对文本进行预测和分类,还可以对语言本身及其使用方式进行建模。有了这种对算法的更深层次的理解,我们还可以生成全新的语句,而不仅仅是模仿模型之前见过的文本。

编码向量

在稠密层的前面有一个向量,它的形状(神经元数量*1)来自给定输入序列的循环层的最后一个时刻。这个向量与卷积神经网络中的思想向量是同等的概念。它是词条训练的编码表示。虽然它只能对与网络所训练的标签相关的序列的思想进行编码,但就NLP领域而言,这是惊人的成就,预示着在计算上能将更高阶的概念编码乘向量。

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

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

相关文章

Neo4j图数据库

文章目录 一、Neo4J相关介绍1.为什么需要图数据库方案1:Google方案2:Facebook 2.特定和优势3.什么是Neo4j4.Neo4j数据模型图论基础属性图模型Neo4j的构建元素 5.软件安装 二、CQL语句1.CQL简介2.CREATE 命令3.MATCH 命令4.RETURN 子句5.MATCH和RETURN6.C…

Qt_显示类控件

目录 一、QLabel 1、QLabel属性介绍 2、textFormat文本格式 3、pixmap标签图片 3.1 resizeEvent 4、QFrame边框 5、alignment文本对齐 6、wordWrap自动换行 7、indent设置缩进 8、margin设置边距 9、buddy设置伙伴 二、QLCDNumber 1、QLCDNumber属性介绍 2、实…

SSM网上书店管理系统---附源码72542

目 录 摘要 1 绪论 1.1 研究背景及意义 1.2国内外研究现状 1.3系统开发的目标 1.4论文结构与章节安排 2 网上书店管理系统系统分析 2.1 可行性分析 2.1.1 技术可行性分析 2.1.2 经济可行性分析 2.1.3 操作可行性分析 2.2 系统功能分析 2.2.1 功能性分析 2.2.2 非…

【在Linux世界中追寻伟大的One Piece】网络命令|验证UDP

目录 1 -> Ping命令 2 -> Netstat命令 3 -> Pidof命令 4 -> 验证UDP-Windows作为client访问Linux 4.1 -> UDP client样例 1 -> Ping命令 Ping命令是一种网络诊断工具,它使用ICMP(Internet Control Message Protocol,互联网控制消…

音视频开发常见的开源项目汇总

FFmpeg 地址:https://ffmpeg.org/介绍:FFmpeg 是一个非常强大的开源多媒体框架,它可以用来处理视频和音频文件。它支持多种格式的转换、编码、解码、转码、流处理等。FFmpeg 包括了 libavformat、libavcodec、libavutil、libswscale、libpos…

数据结构基础讲解(八)——树和二叉树专项练习(上)

本文数据结构讲解参考书目: 通过网盘分享的文件:数据结构 C语言版.pdf 链接: https://pan.baidu.com/s/159y_QTbXqpMhNCNP_Fls9g?pwdze8e 提取码: ze8e 数据结构基础讲解(七)——数组和广义表专项练习-CSDN博客 个人主页&#x…

IDEA 常用配置和开发插件

件市场中搜索并安装“Git Integration”插件。 一、前言 在本篇文章中我会为大家总结一些我自己常用的配置和开发插件,此外也给大家提供一个建议,可以根据自己的项目需求和个人偏好选择适合的插件。另外,IDEA 也在不断更新,可能会…

C++进阶 二叉搜索树的讲解

二叉搜索树的概念 二叉搜索树又称为二叉排序树。 二叉搜索树的性质 若它的左子树不为空,则左子树上所有结点的值都小于等于根结点的值若它的右子树不为空,则右子树上所有结点的值都大于等于根结点的值它的左右子树也分别为二叉搜索树二叉搜索树中可以支持…

Geneformer AI 模型,有限数据也能解锁基因网络

目录 类似于 BERT 的单单元数据参考模型 NVIDIA Clara 工具组合用于药物研发 用于疾病建模的基础 AI 模型 Geneformer 是最近推出的 和功能强大的 AI 模型,可以通过从大量单细胞转录组数据中进行迁移学习来学习基因网络动力学和相互作用。借助此工具,…

尚品汇-订单拆单、支付宝关闭交易、关闭过期订单整合(五十)

目录: (1)拆单接口 (2)取消订单业务补充关闭支付记录 (3)支付宝关闭交易 (4)查询支付交易记录 (5)PaymentFeignClient 远程接口 &#xff08…

探索Python轻量级数据库:TinyDB的奇妙之旅

文章目录 探索Python轻量级数据库:TinyDB的奇妙之旅背景:为何选择TinyDB?什么是TinyDB?如何安装TinyDB?简单库函数使用方法场景应用常见Bug及解决方案总结 探索Python轻量级数据库:TinyDB的奇妙之旅 背景&…

Redis入门2

在java中操作Redis Redis的Java客户端 Redis 的 Java 客户端很多,常用的几种: Jedis Lettuce Spring Data Redis Spring Data Redis 是 Spring 的一部分,对 Redis 底层开发包进行了高度封装。 在 Spring 项目中,可以使用Spring Data R…

Vue介绍、窗体内操作、窗体间操作学习

系列文章目录 第一章 基础知识、数据类型学习 第二章 万年历项目 第三章 代码逻辑训练习题 第四章 方法、数组学习 第五章 图书管理系统项目 第六章 面向对象编程:封装、继承、多态学习 第七章 封装继承多态习题 第八章 常用类、包装类、异常处理机制学习 第九章 集…

【Linux】Ubuntu 22.04 shell实现MySQL5.7 tar 一键安装

参考 https://blog.csdn.net/qq_35995514/article/details/134350572?spm1001.2014.3001.5501 源文章是centos 的 教程,这里为了大家的方便,再原作者基础上做了修改,记录了ubuntu的22.04的我的配置,加了一个删除原有mysql 的脚本…

【诉讼流程-健身房-违约认定-私教课-诉讼书前提材料整理-民事诉讼-自我学习-铺平通往法律的阶梯-讲解(2)】

【诉讼流程-健身房-违约-私教课-前期法律流程-民事诉讼-自我学习-铺平通往法律的阶梯-讲解(2)】 (1)前言说明1、目的2、一个小测试1、更换原教练2、频繁更换教练3、上课估计拖课,占用上课时间,抽烟等。4、以…

Python计算机视觉 第10章-OpenCV

Python计算机视觉 第10章-OpenCV OpenCV 是一个C 库,用于(实时)处理计算视觉问题。实时处理计算机视觉的 C 库,最初由英特尔公司开发,现由 Willow Garage 维护。OpenCV 是在 BSD 许可下发布的开源库,这意味…

2024/9/11学校教的响应式前端能学到什么?

9.11 1)砌砖 确定整体框架,而不是想到一点写一点,类似盖大楼,不是想到哪盖到哪,先砌砖,再装修 砌砖前先划分好砌砖范围(初始化样式) 清除body自带的内外边距 * { margin: 0; padding: 0; }去掉li的小圆点…

【新片场-注册安全分析报告-无验证方式导致安全隐患】

前言 由于网站注册入口容易被黑客攻击,存在如下安全问题: 1. 暴力破解密码,造成用户信息泄露 2. 短信盗刷的安全问题,影响业务及导致用户投诉 3. 带来经济损失,尤其是后付费客户,风险巨大,造…

微信小程序开发第三课

1 wxml语法 1.1 模版语法 # 1 在页面 xx.js 的 Page() 方法的 data 对象中进行声明定义 # 2 在xx.wxml 中使用 {{}} 包裹,显示数据 # 3 可以显示如下,不能编写js语句或js方法-变量-算数运算-三元运算-逻辑判断# 4 只是单纯通过赋值,js中…

快速生成服务器响应json-server的安装和使用

json-server介绍地址:https://www.geeksforgeeks.org/json-server-setup-and-introduction/ 1.json-server是什么? 基于自定义的json文件,快速生成服务端响应,可用于前端调试接口 2.安装和卸载json-server 2.1 安装: 使用npm命令: npm install -g json-server 2.2 卸载 npm …