前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Tensorflow2.0实现简单的RNN文本分析

Tensorflow2.0实现简单的RNN文本分析

作者头像
用户7569543
发布于 2020-07-19 13:20:06
发布于 2020-07-19 13:20:06
85400
代码可运行
举报
运行总次数:0
代码可运行

前面我们介绍的全连接神经网络以及卷积神经网络都只能单独处理一个个输入,并且前一个输入和后一个输入往往是没有直接联系。但是,在某些情况下我们需要很好地处理序列信息,即前一个输入与后一个输入是有关系的。比如我们理解一句话的时候,往往需要联系前后的句子才能得到这句话表达的准确含义。序列问题有很多,例如语音对话、文本理解以及视频/音频分析等。今天老shi将给大家介绍深度学习中另外一种非常重要的神经网络类型——循环神经网络RNN,它最擅长处理序列问题!

举个栗子,比如,老师说小明总是上课迟到,今天罚____打扫卫生。很明显,这里空缺的部分大概率是说小明,而不是我。

那么,循环神经网络到底是啥?循环神经网络(Recurrent Neural Network)种类繁多,我们先从最简单的循环神经网络开始吧。

基本的循环神经网络

下图是一个简单的循环神经网络,它由输入层、一个隐藏层和一个输出层组成:

这个图看起来有点奇怪,跟我们之前介绍的神经网络都不太一样。这是因为循环神经网络实在是不好画,这是简化+抽象后的画法。如果把上面有W的那个带箭头的圈去掉,它就变成了最普通的全连接神经网络。x是一个向量,它表示输入层的值(这里神经元节点没有画出来);s是一个向量,它表示隐藏层的值(这里隐藏层面只画了一个节点,你也可以想象这一层其实是有多个节点,节点数与向量s的维度相同);U是输入层到隐藏层的权重矩阵(类似于全连接神经网络中每层的权重);o也是一个向量,它表示输出层的值;V是隐藏层到输出层的权重矩阵。现在我们来看看W到底是什么?因为循环神经网络的隐藏层的值s不仅仅取决于当前这一次的输入x,还取决于上一次隐藏层的值s。所以,权重矩阵W就是隐藏层上一次的值作为这一次的输入的权重。

如果我们把上面的图展开,循环神经网络大概就是下面这个样子:

现在看上去就比较清楚了,这个网络在t时刻接收到输入Xt之后,隐藏层的值是St,输出值是Ot。关键一点是,St的值不仅仅取决于Xt,还取决于St-1。我们可以用下面的公式来表示循环神经网络的计算方法:

式1是输出层的计算公式,输出层是一个全连接层,也就是它的每个节点都和隐藏层的每个节点相连。V是输出层的权重矩阵,g是激活函数。式2是隐藏层的计算公式,它是循环层。U是输入x的权重矩阵,W是上一次的值作为这一次的输入的权重矩阵,f是激活函数。

从上面的公式我们可以看出,循环层和全连接层的区别就是循环层多了一个权重矩阵 W。如果反复把式2代入到式1,我们将得到:

从上面可以看出,循环神经网络的输出值,是受前面很多次输入值影响的,这就是为什么循环神经网络可以往前看任意多个输入值的原因。

当然,前面介绍的只是最基本的循环神经网络结构,除此之外,其实循环神经网络还有例如双向循环神经网络、深度循环神经网络以及很多其他的变种,这里老shi不打算一次给大家介绍完(介绍了你们也接受不了,哈哈)。最后是一个非常简单的文本分析RNN代码实践案例,有兴趣的同学可以跟着现实一下。下节课老shi准备给大家介绍非常常用的RNN变种LSTM和GRU,敬请期待!!

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from tensorflow import kerasfrom tensorflow.keras import layers

num_words = 30000maxlen = 200

#导入数据(x_train, y_train), (x_test, y_test) = keras.datasets.imdb.load_data(num_words=num_words)
#x_train = keras.preprocessing.sequence.pad_sequences(x_train, maxlen, padding='post')x_test = keras.preprocessing.sequence.pad_sequences(x_test, maxlen, padding='post')print(x_train.shape, ' ', y_train.shape)print(x_test.shape, ' ', y_test.shape)

def RNN_model():    model = keras.Sequential([        layers.Embedding(input_dim=30000, output_dim=32, input_length=maxlen),        layers.SimpleRNN(32, return_sequences=True),        layers.SimpleRNN(1, activation='sigmoid', return_sequences=False)    ])    model.compile(optimizer=keras.optimizers.Adam(),                 loss=keras.losses.BinaryCrossentropy(),                 metrics=['accuracy'])return model
model = RNN_model()model.summary()

history = model.fit(x_train, y_train, batch_size=64, epochs=5,validation_split=0.1)
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-01-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 多赞云数据 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
深度学习之RNN循环神经网络(理论+图解+Python代码部分)[通俗易懂]
前段时间实验室人手一本《Deep Learning》,本文章结合这本圣经和博客上各类知识以及我自己的理解和实践,针对RNN循环神经网络作出总结。
全栈程序员站长
2022/11/03
8K0
一文详解RNN及股票预测实战(Python)!
循环神经网络(RNN)是基于序列数据(如语言、语音、时间序列)的递归性质而设计的,是一种反馈类型的神经网络,其结构包含环和自重复,因此被称为“循环”。它专门用于处理序列数据,如逐字生成文本或预测时间序列数据(例如股票价格)。
算法进阶
2022/06/02
1.3K0
一文详解RNN及股票预测实战(Python)!
Keras基本用法
Keras是目前使用最为广泛的深度学习工具之一,它的底层可以支持TensorFlow、MXNet、CNTK和Theano。如今,Keras更是被直接引入了TensorFlow的核心代码库,成为TensorFlow官网提供的高层封装之一。下面首先介绍最基本的Keras API,斌哥给出一个简单的样例,然后介绍如何使用Keras定义更加复杂的模型以及如何将Keras和原生态TensorFlow结合起来。
狼啸风云
2019/12/19
1.6K0
Keras框架速查手册(Python For Data Science Cheat Sheet Keras)
Keras框架速查表 1 Keras 1.1 一个基本示例 2 数据 2.1 Keras数据设置 3 模型结构 3.1 Sequential模型 3.2 多层感知器(MLP) 3.2.1 二元分类 3.2.2 多类别分类 3.2.3 回归 3.3 卷积神经网络(CNN) 3.4 循环神经网络(RNN) 4 预处理 4.1 序列填充 4.2 创建虚拟变量 4.3 训练集、测试集分离 4.4 标准化/归一化 5 模型细节提取 5.1 模型输出形状 5.2 模型总结 5.3 get模型参数 5.4 g
荣仔_最靓的仔
2022/01/05
3790
Keras框架速查手册(Python For Data Science Cheat Sheet Keras)
《Python深度学习》 Part 1
全部内容来源于《Python深度学习》,以练习为主,理论知识较少,掺杂有一些个人的理解,虽然不算很准确,但是胜在简单易懂,这本书是目前看到最适合没有深度学习经验的同学们入门的书籍了,不妨试试,该书作者:Francois Chollet,即Keras之父,该书译者:张亮;
HoLoong
2021/05/24
4250
《Python深度学习》 Part 1
[Python人工智能] 十九.Keras搭建循环神经网络分类案例及RNN原理详解
从本专栏开始,作者正式研究Python深度学习、神经网络及人工智能相关知识。前一篇文章分享了卷积神经网络CNN原理,并通过Keras编写CNN实现了MNIST分类学习案例。这篇文章将详细讲解循环神经网络RNN的原理知识,并采用Keras实现手写数字识别的RNN分类案例及可视化呈现。基础性文章,希望对您有所帮助!
Eastmount
2022/11/25
1.1K0
使用 RNN 进行情感分析的初学者指南
情感分析可能是最常见的 自然语言处理 的应用之一。我无需去额外强调在客服工具中情感分析的重要性。本文将利用循环神经网络,训练出一个基于 IMDB 数据集的电影评论分类器。如果你想了解更多关于深度学习在情感分析中的应用,这里推荐一篇很棒的论文。
AI研习社
2018/07/26
9950
使用 RNN 进行情感分析的初学者指南
递归模型的语言处理入门:双向rnn,编码器和词嵌入
双向RNN是RNN的一种变体,它对于自然语言处理任务特别有用,并且有时可以提高性能。
deephub
2021/03/25
5510
递归模型的语言处理入门:双向rnn,编码器和词嵌入
循环神经网络(RNN)与LSTM
循环神经网络(Recurrent Neural Networks, RNN)是一种专门用于处理序列数据的神经网络。RNN通过将前一个时间步的输出反馈到当前时间步,使得模型能够“记住”之前的输入信息,从而适合处理时间序列或文本等有序数据。
LucianaiB
2025/01/24
3330
关于深度学习系列笔记十五(循环神经网络)
‰ 提取单词或字符的 n-gram,并将每个 n-gram 转换为一个向量。n-gram 是多个连续单词或字符的集合(n-gram 之间可重叠)。
python与大数据分析
2022/03/11
6470
关于深度学习系列笔记十五(循环神经网络)
深度学习 —— TensorFlow实现循环神经网络
友友们,又见面了。今天我们来继续充电。传统的神经网络比如全连接神经网络或卷积神经网络,相信大家或多或少都听过。那么循环神经网络大家是否有接触呢?这篇我们就来了解一下循环神经网络,然后我们使用TensorFlow来训练循环神经网络模型。ok,下面正式开始。
china马斯克
2025/03/20
1020
深度学习入门指南:一篇文章全解
https://cloud.tencent.com/developer/article/2465232?shareByChannel=link
池央
2024/11/13
2010
深度学习入门指南:一篇文章全解
[Python人工智能] 二十.基于Keras+RNN的文本分类vs基于传统机器学习的文本分类
从本专栏开始,作者正式研究Python深度学习、神经网络及人工智能相关知识。前一篇文章分享了循环神经网络RNN的原理知识,并采用Keras实现手写数字识别的RNN分类案例及可视化呈现。这篇文章作者将带领大家用Keras实现RNN和LSTM的文本分类算法,并与传统的机器学习分类算法进行对比实验。基础性文章,希望对您有所帮助!同时,如果文章中存在错误或不足之处,也欢迎与我探讨,作者也是初学者,非常希望您的交流能促进共同成长。感谢参考文献中基基伟老师、知乎老师们的文章,共勉~
Eastmount
2023/02/28
1.4K0
[Python人工智能] 二十.基于Keras+RNN的文本分类vs基于传统机器学习的文本分类
keras 基础入门整理
在进行自然语言处理之前,需要对文本进行处理。 本文介绍keras提供的预处理包keras.preproceing下的text与序列处理模块sequence模块
学到老
2019/01/25
1.6K0
深度学习之二分类问题
IMDB 数据集包含来自互联网电影数据库(IMDB)的 50 000 条严重两极分化的评论。
李小白是一只喵
2020/04/23
1.5K0
深度学习之二分类问题
深度学习在情感分析中的应用
编者按:本文选自图书《Keras快速上手:基于Python的深度学习实战》第七章,本书覆盖当前最热门的传统数据挖掘场景和四个深度学习应用场景,据调研,是目前唯一一本以应用为导向的介绍机器学习和深度学习的专业书籍,具备很高的参考价值和学术价值。 注意啦!文末活动评论赠送此书! 自然语言情感分析简介 情感分析无处不在,它是一种基于自然语言处理的分类技术。其主要解决的问题是给定一段话,判断这段话是正面的还是负面的。例如在亚马逊网站或者推特网站中,人们会发表评论,谈论某个商品、事件或人物。商家可以利用情感分析工具
用户1737318
2018/06/05
1.6K0
[Deep-Learning-with-Python] 文本序列中的深度学习
深度学习模型可以处理文本序列、时间序列、一般性序列数据等等。处理序列数据的两个基本深度学习算法是循环神经网络和1D卷积(2D卷积的一维模式)。
公众号-不为谁写的歌
2020/07/23
3.9K0
RNN,具有记忆功能神经网络的理解与实现
我们当前掌握的网络类型,统称为feed forward网络。这种网络的特点是,当我们把很多条数据输入网络进行训练时,网络没有“记忆性”,也就是网络认为前一条输入的数据与下一条输入的数据之间没有任何联系。然而在实际运用中,输入的数据间往往存在着强联系,特别是在自然语言处理中。
望月从良
2018/09/29
1.3K0
RNN,具有记忆功能神经网络的理解与实现
Keras文本分类实战(下)
在上一节Keras文本分类实战(上),讲述了关于NLP的基本知识。这部分,将学会以不同方式将单词表示为向量。
用户3578099
2019/08/15
1.2K0
基于keras的文本分类实践基于keras的文本分类实践
文本分类是自然语言处理中一个很经典也很重要的问题,它的应用很广泛,在很多领域发挥着重要作用,例如垃圾邮件过滤、舆情分析以及新闻分类等。和其他的分类问题一样,文本分类的核心问题首先是从文本中提取出分类数据的特征,然后选择合适的分类算法和模型对特征进行建模,从而实现分类。当然文本分类问题又具有自身的特点,例如文本分类需要对文本进行分词等预处理,然后选择合适的方法对文本进行特征表示,然后构建分类器对其进行分类。本文希望通过实践的方式对文本分类中的一些重要分类模型进行总结和实践,尽可能将这些模型联系起来,利用通俗易懂的方式让大家对这些模型有所了解,方便大家在今后的工作学习中选择文本分类模型。
绿盟科技研究通讯
2019/12/11
1.3K0
基于keras的文本分类实践基于keras的文本分类实践
推荐阅读
相关推荐
深度学习之RNN循环神经网络(理论+图解+Python代码部分)[通俗易懂]
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验