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

news2024/11/24 5:55:17

目录

有状态性

双向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 Bidirectional

num_neurons=10
maxlen=100
embedding_dims=300

model=Sequential()
model.add(Bidirectional(SimpleRNN(
    num_neurons,return_sequences=True,input_shape=(maxlen,embedding_dims)
)))

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

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

编码向量

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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

《深入浅出多模态》之多模态经典模型:InstructBLIP

🎉AI学习星球推荐: GoAI的学习社区 知识星球是一个致力于提供《机器学习 | 深度学习 | CV | NLP | 大模型 | 多模态 | AIGC 》各个最新AI方向综述、论文等成体系的学习资料,配有全面而有深度的专栏内容,包括不限于 前沿论文解读、资料共享、行业最新动态以、实践教程、求职…

FlinkCDC 3.2.0 新增优点 Pattern Replacement in routing rules

新增优点&#xff1a;Pattern Replacement in routing rules flinkcdc 3.2.0版本相较于3.1.0版本&#xff0c;避免了多表多sink多次写 route 路由的麻烦&#xff0c;类似于统一前后缀的形式多表多sink&#xff0c;通过<>正则&#xff0c;大大减少了书写 官网&#xff1…

年薪30W的项目经理,都在用这个方法做项目!

看到很多新手项目经理不知道在带项目的时候应该怎么做&#xff0c;这里给大家整理了一份超牛的资深项目经理在日常工作中的带项目方法&#xff0c;大家有需要的可以收藏哦~&#xff01; 捋清思路&#xff0c;制定章程 在接手到一个新的项目时&#xff0c;项目经理要做的并不是…

农业品牌宣传:让绿色故事传遍万家!

合作咨询联系竑图 hongtu201988 乡村要振兴&#xff0c;品牌必须响亮&#xff01;农产品企业在追求渠道拓展与销量增长的同时&#xff0c;绝不能忽视品牌形象构建的基石作用。若缺乏稳固的品牌支撑&#xff0c;即便是再广阔的渠道与惊人的销量&#xff0c;也可能如同沙上建塔&…

灵魂绑定Tokens介绍和在Sui上的案例

灵魂绑定token&#xff08;Soulbound token&#xff0c;SBT&#xff09;这一术语由以太坊联合创始人Vitalik Buterin提出&#xff0c;是一种设计为永久且不可转让的NFT。与典型的NFT可以自由交易不同&#xff0c;SBT始终绑定于原始账户&#xff0c;就像游戏中的技能或成就一样与…

探索Python的隐秘角落:Keylogger库的神秘面纱

文章目录 探索Python的隐秘角落&#xff1a;Keylogger库的神秘面纱背景&#xff1a;为何需要Keylogger&#xff1f;库简介&#xff1a;什么是Keylogger&#xff1f;安装指南&#xff1a;如何将Keylogger纳入你的项目&#xff1f;函数使用&#xff1a;5个简单函数的介绍与代码示…

vue3 使用 codemirror 实现yaml文件的在线编辑

vue3 使用 codemirror 实现yaml文件的在线编辑 1. 使用情形2. 插件下载3. 封装yaml编辑器组件4. 父组件使用5. js-yaml 使用6. 备注 1. 使用情形 需要对yaml文件进行在线编辑&#xff0c;并且进行基础格式验证 2. 插件下载 vue-codemirror 在线代码编辑器插件 js-yaml 用于转…

RickdiculouslyEasy-CTF-综合靶场

步骤一&#xff1a;利用Goby搜索靶机地址 步骤二&#xff1a;访问靶机地址 步骤二&#xff1a;扫描端口 nmap 172.16.1.7 -p 1-65535 步骤三&#xff1a; 扫描目录 dirsearch -u http://172.16.1.7/ 第一个flag&#xff1a;命令&#xff1a;nmap -A -v -T4 172.16.1.7 -p 1-6…

MUR2060CTR-ASEMI快恢复二极管对管MUR2060CTR

编辑&#xff1a;ll MUR2060CTR-ASEMI快恢复二极管对管MUR2060CTR 型号&#xff1a;MUR2060CTR 品牌&#xff1a;ASEMI 封装&#xff1a;TO-220AB 安装方式&#xff1a;插件 批号&#xff1a;最新 最大平均正向电流&#xff08;IF&#xff09;&#xff1a;20A 最大循环…

Origin2024中绘制多因子分组柱状图,直观展示不同组别内的数据变化!

当我们需要对比多组平行数据时&#xff0c;采用Origin多因子分组柱状图&#xff0c;不仅可以直接的对比多组数据&#xff0c;同时还能够直观展示各个指标因子的数据变化及趋势 操作步骤&#xff1a; 1、先打开Origin2024软件&#xff0c;然后在Book1中输入如下示例数据&#…

边缘检测运用

文章目录 一、简介1.边缘检测的概念2.边缘检测的目的 二、代码实现三、边缘检测的方法1.1Canny边缘检测器1.2.Canny代码实现2.1Sobel边缘检测器2.2Sobel代码实现3.1Laplacian边缘检测器3.2Laplacian代码实现4.1Scharr边缘检测器4.2Scharr代码实现 四、边缘检测的应用 一、简介 …

Qt与MQTT交互通信

MQTT全称是&#xff08;Message Queuing Telemetry Transport&#xff09;&#xff0c;即消息队列遥测传输协议 是一种基于发布/订阅&#xff08;Publish/Subscribe&#xff09;模式的轻量级通讯协议&#xff0c;并且该协议构建于TCP/IP协议之上&#xff0c;常用于互联网中&am…

vue3封装数字上下滚动翻牌器,

优点&#xff1a;可以传入字符串设置初始数字位数&#xff0c;也可以直接传入数字&#xff0c;让他自己根据位数渲染 组件代码&#xff1a; <template><div class"count-flop" :key"compKey"><!-- --><div:class"item ! . ?…

【EI会议征稿通知】第四届材料工程与应用力学国际学术会议(ICMEAAE 2025)

第四届材料工程与应用力学国际学术会议&#xff08;ICMEAAE 2025&#xff09; 2025 4th International Conference on Materials Engineering and Applied Mechanics 本次会议将重点讨论材料科学、应用力学等领域的最新研究进展与发展趋势。会议旨在为国内外从事这些领域研究…

怎么利用接口发送图文彩信

在数字化时代&#xff0c;信息的传递方式日新月异&#xff0c;从传统的书信、电话到如今的即时通讯软件、社交媒体&#xff0c;每一种新技术的应用都在不断重塑我们的沟通方式。而在这其中&#xff0c;彩信&#xff08;Multimedia Messaging Service, MMS&#xff09;作为一种融…

python安装tensorflow一直报错

python安装tensorflow一直报错&#xff0c;试了3.5、3.6、3.7、3.8、3.9、3.10&#xff0c;人麻&#xff0c;全部都不行 问题描述 pip install tensorflow报错ERROR: Could not find a version that satisfies the requirement tensorflow (f问题分析 直到在网上看到&#x…

体系结构论文导读(四十五):Design and Dynamic Update of Real-Time Systems 19‘RTSS

挑战部分 背景问题&#xff1a; 现代工业系统和产品&#xff08;如汽车、智能手机、医疗设备&#xff09;越来越依赖于软件&#xff0c;尤其是嵌入式实时系统。这些系统的可靠性对于社会至关重要&#xff0c;比如特斯拉自动驾驶系统的软件问题曾引发一些事故。目前&#xff0c;…

二维码生成

1、引入二维码生成库 使用一个支持二维码生成的库&#xff0c;如ZXing&#xff08;Zebra Crossing&#xff09;&#xff0c;它提供了二维码生成的工具和API。 pom.xml文件导入ZXing依赖。 <!-- ZXing 库依赖 --><dependency><groupId>com.google.zxing<…

OpenSNN推文:《从沙粒到超级大脑:一步步揭开芯片的秘密》

你有没有想过&#xff0c;手机、电脑、电视等设备里的“智能大脑”是怎么来的&#xff1f;这个大脑就是芯片&#xff0c;它让这些设备变得聪明&#xff0c;能够快速处理各种信息。今天&#xff0c;我将详细地解释芯片的诞生过程&#xff0c;从最基础的原材料一直到它成为我们日…

【HCIA-Datacom】数据通信网络基础

数据通信网络基础 1. 通信与网络网络通信的基本概念数据通信网络定义网络设备 2. 网络类型与网络拓扑网络类型网络拓扑网络拓扑形态 3.网络工程与网络工程师的定义测一测 1. 通信与网络 这里只用作简单的了解即可&#xff0c;在后续中 网络通信的基本概念 ⭐通信&#xff1…