深度学习--RNN基础

这篇具有很好参考价值的文章主要介绍了深度学习--RNN基础。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

深度学习--RNN基础

​ RNN(Recurrent Neutral Network,循环神经网络),主要应用于自然语言处理NLP。

RNN表示方法

1.编码

因为Pytorch中没有String类型数据,需要引入序列表示法(sequence representation)对文本进行表示。

​ 表示方法:[seq_len:一句话的单词数,feature_len:每个单词的表示方法]

文本信息的表达方式:

  1. one-hot:多少个单词就有多少位编码。缺点:非常稀疏(sparse),维度太高,缺乏语意相关性(semantic similarity)
  2. word2vec
import torch
import torch.nn as nn

word_to_ix = {"hello":0,"world":1}

embeds = nn.Embedding(2,5)  #2行5列  一共有2个单词,用5位的feature来表示
lookup_tensor = torch.tensor([word_to_ix["hello"]],dtype=torch.long)
hello_embed = embeds(lookup_tensor)
print(hello_embed)
#tensor([[-0.2169,  0.3653,  0.7812, -0.8420, -0.2815]],
#       grad_fn=<EmbeddingBackward0>)


word_to_ix = {"hello":0,"world":1}

embeds = nn.Embedding(2,5)  #2行5列  一共有2个单词,用5位的feature来表示
lookup_tensor = torch.tensor([word_to_ix["hello"]],dtype=torch.long)
hello_embed = embeds(lookup_tensor)
print(hello_embed)
#tensor([[-0.2169,  0.3653,  0.7812, -0.8420, -0.2815]],
#       grad_fn=<EmbeddingBackward0>)
  1. glove
from torchnlp.word_to_vector import GloVe
vectors = GloVe()
vector["hello"]

2. batch

两种引入方式:[word num, b, word vec] 或者 [b, word num, word vec ] 第一种常用

RNN原理

naive version

对每一个单词进行 x@w1+b1 操作,每个单词都有不同的参数

Weight sharing

共享参数,用同一个w和b

Consistent memory 持续记忆

每一个单词运算表示:x @ wxh +h @ whh

增加了一个h单元,相当于一个memory单元。

总结:

RNN的网络为yt = why*ht

ht=激活函数(Whh* ht-1+Wxh *xt) 常用的为tanh

模型的反向传播:BPTT(back propagation through time)

RNN层的使用方法

run = nn.RNN(100,10)  #word vec 单词的表示位数, memory 记忆节点

run._parameters.keys()
#odict_keys(['weight_ih_l0', 'weight_hh_l0', 'bias_ih_l0', 'bias_hh_l0'])

run.weight_hh_l0.shape, run.weight_ih_l0.shape
#(torch.Size([10, 10]), torch.Size([10, 100]))

run.bias_hh_l0.shape, run.bias_ih_l0.shape
#(torch.Size([10]), torch.Size([10]))

1.nn.RNN

nn.RNN(input_size:单词的表示方法维度,hidden_size:记忆的维度:,num_layers:默认是1)

前向传播,一步到位 out, ht = forward(x, h0)

​ x:[一句话单词数,batch几句话,表示的维度]

​ h0/ht:[层数,batch,记忆(参数)的维度]

​ out:[一句话单词数,batch,参数的维度]

import torch
import torch.nn as nn

run = nn.RNN(input_size=100, hidden_size=20, num_layers=1)
print(run)
#RNN(100, 20)

x = torch.randn(10,3,100)
h = torch.zeros(1,3,20)
out,h1 = run(x,h)
print(out.shape,h1.shape)
#torch.Size([10, 3, 20]) torch.Size([1, 3, 20])

2. nn.RNNCell:只完成一个计算

nn.RNNCell(input_size:单词的表示方法维度,hidden_size:记忆的维度:,num_layers:默认是1)

前向传播:ht=rnncell(xt,ht_1)

​ xt:[batch,word维度]

​ ht_1/ht:[层数,batch,参数的维度]文章来源地址https://www.toymoban.com/news/detail-425051.html

#RNNCell
x = torch.randn(10,3,100)
cell = nn.RNNCell(100,20)
h1 = torch.zeros(3,20)
#人为控制一句话的单词数
for xt in x:
    print(xt)
    h1 = cell(xt,h1)
print(h1.shape)
#torch.Size([3, 20])

到了这里,关于深度学习--RNN基础的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 深度学习(2)---循环神经网络(RNN)

     1. 在深度学习中,序列数据(Sequence data)是指具有 前后顺序关联 的数据。常见的时间序列数据、文本数据(单词序列或字符序列)、语音数据等。这种数据不仅十分常见,而且往往具有很高的应用价值,比如我们可以通过过去的天气数据来预测未来的天气状况,通过以往

    2024年02月07日
    浏览(50)
  • 机器学习&&深度学习——NLP实战(情感分析模型——RNN实现)

    👨‍🎓作者简介:一位即将上大四,正专攻机器学习的保研er 🌌上期文章:机器学习深度学习——NLP实战(情感分析模型——数据集) 📚订阅专栏:机器学习深度学习 希望文章对你们有所帮助 与词相似度和类比任务一样,我们也可以将预先训练的词向量应用于情感分析。

    2024年02月11日
    浏览(35)
  • 机器学习&&深度学习——RNN的从零开始实现与简洁实现

    👨‍🎓作者简介:一位即将上大四,正专攻机器学习的保研er 🌌上期文章:机器学习深度学习——循环神经网络RNN 📚订阅专栏:机器学习深度学习 希望文章对你们有所帮助 我们将在之前所说的《时光机器》数据集上训练,先读取数据集: 回想一下,在train_iter中,每个词

    2024年02月13日
    浏览(44)
  • 深度学习实战——循环神经网络(RNN、LSTM、GRU)

           忆如完整项目/代码详见github: https://github.com/yiru1225 (转载标明出处 勿白嫖 star for projects thanks) 目录 系列文章目录 一、实验综述 1.实验工具及内容 2.实验数据 3.实验目标 4.实验步骤 二、循环神经网络综述 1.循环神经网络简介 1.1 循环神经网络背景 1.2 循环神经网络

    2023年04月24日
    浏览(44)
  • MLP/CNN/RNN/Transformer主流深度学习模型的区别

    1. 多层感知机(MLP) 核心特征 : 结构 :MLP 是一种基本的前馈神经网络,包含一个输入层、一个或多个隐藏层以及一个输出层。每层由全连接的神经元组成。 用途 :适用于简单的分类和回归任务。 限制 :不适用于处理序列数据或图像数据,因为它不具备处理输入之间时间

    2024年04月26日
    浏览(43)
  • 深度学习4. 循环神经网络 – Recurrent Neural Network | RNN

    目录 循环神经网络 – Recurrent Neural Network | RNN 为什么需要 RNN ?独特价值是什么? RNN 的基本原理 RNN 的优化算法 RNN 到 LSTM – 长短期记忆网络 从 LSTM 到 GRU RNN 的应用和使用场景 总结 百度百科+维基百科 卷积神经网络和普通的算法大部分都是输入和输出的一一对应,也就是一

    2024年02月11日
    浏览(45)
  • 深度学习-循环神经网络-RNN实现股价预测-LSTM自动生成文本

    基于文本内容及其前后信息进行预测 基于目标不同时刻状态进行预测 基于数据历史信息进行预测 序列模型:输入或者输出中包含有序列数据的模型 突出数据的前后序列关系 两大特点: 输入(输出)元素之间是具有顺序关系。不同的顺序,得到的结果应该是不同的,比如“

    2024年01月24日
    浏览(53)
  • 【深度学习】——循环神经网络RNN及实例气温预测、单层lstm股票预测

           密集连接网络和卷积神经网络都有主要的特点,那就是它们没有记忆。它们单独处理每个输入,在输入和输入之间没有保存任何状态。举个例子:当你在阅读一个句子的时候,你需要记住之前的内容,我们才能动态的了解这个句子想表达的含义。生物智能已渐进的方

    2023年04月24日
    浏览(50)
  • 【算法小记】深度学习——循环神经网络相关原理与RNN、LSTM算法的使用

    文中程序以Tensorflow-2.6.0为例 部分概念包含笔者个人理解,如有遗漏或错误,欢迎评论或私信指正。 卷积神经网络在图像领域取得了良好的效果,卷积核凭借优秀的特征提取能力通过深层的卷积操作可是实现对矩形张量的复杂计算处理。但是生活中除了图像这样天然以矩阵形

    2024年01月25日
    浏览(55)
  • 【深度学习笔记】6_2 循环神经网络RNN(recurrent neural network)

    注:本文为《动手学深度学习》开源内容,部分标注了个人理解,仅为个人学习记录,无抄袭搬运意图 上一节介绍的 n n n 元语法中,时间步 t t t 的词 w t w_t w t ​ 基于前面所有词的条件概率只考虑了最近时间步的 n − 1 n-1 n − 1 个词。如果要考虑比 t − ( n − 1 ) t-(n-1) t −

    2024年03月12日
    浏览(69)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包