• 深度学习(PyTorch)——循环神经网络(RNN)基础篇二


    B站up主“刘二大人”视频 笔记

    本文章是该视频的一部分,该部分的案例代码使用RNN做一个简单的实验,其余部分见作者的其他文章。

    一、什么是循环神经网络

    循环神经网络(Rerrent Neural Network, RNN),历史啊,谁发明的都不重要,说了你也记不住,你只要记住RNN是神经网络的一种,类似的还有深度神经网络DNN,卷积神经网络CNN,生成对抗网络GAN,等等。另外你需要记住RNN的特点,RNN对具有序列特性的数据非常有效,它能挖掘数据中的时序信息以及语义信息,利用了RNN的这种能力,使深度学习模型在解决语音识别、语言模型、机器翻译以及时序分析等NLP领域的问题时有所突破。

    我们需要重点来了解一下RNN的特点这句话,什么是序列特性呢?我个人理解,就是符合时间顺序,逻辑顺序,或者其他顺序就叫序列特性,举几个例子:

    • 拿人类的某句话来说,也就是人类的自然语言,是不是符合某个逻辑或规则的字词拼凑排列起来的,这就是符合序列特性。
    • 语音,我们发出的声音,每一帧每一帧的衔接起来,才凑成了我们听到的话,这也具有序列特性、
    • 股票,随着时间的推移,会产生具有顺序的一系列数字,这些数字也是具有序列特性。

    二、循环神经网络能干什么

    我们先来看一个NLP很常见的问题,命名实体识别,举个例子,现在有两句话:

    第一句话:I like eating apple!(我喜欢吃苹果!)

    第二句话:The Apple is a great company!(苹果真是一家很棒的公司!)

    现在的任务是要给apple打Label,我们都知道第一个apple是一种水果,第二个apple是苹果公司,假设我们现在有大量的已经标记好的数据以供训练模型,当我们使用全连接的神经网络时,我们做法是把apple这个单词的特征向量输入到我们的模型中(如下图),在输出结果时,让我们的label里,正确的label概率最大,来训练模型,但我们的语料库中,有的apple的label是水果,有的label是公司,这将导致,模型在训练的过程中,预测的准确程度,取决于训练集中哪个label多一些,这样的模型对于我们来说完全没有作用。问题就出在了我们没有结合上下文去训练模型,而是单独的在训练apple这个单词的label,这也是全连接神经网络模型所不能做到的,于是就有了我们的循环神经网络。

    三、RNN使用案例,代码如下:

    1. import torch
    2. batch_size = 1
    3. seq_len = 3 # 每一个样本都有x1,x2,x3
    4. input_size = 4 # x1,x2,x3都是4*1的向量
    5. hidden_size = 2 # 隐层都是2*1的向量
    6. num_layers = 1 # RNN层的维度
    7. cell = torch.nn.RNN(input_size=input_size, hidden_size=hidden_size,num_layers=num_layers)
    8. inputs = torch.randn(seq_len, batch_size, input_size)
    9. hidden = torch.zeros(num_layers, batch_size, hidden_size) # h0为全0的向量
    10. out, hidden = cell(inputs, hidden) # out为隐层的输出
    11. print('Output size:', out.shape)
    12. print('Output:', out)
    13. print('Hidden size:', hidden.shape)
    14. print('Hidden:', hidden)

    运行结果如下:

    视频截图如下:

     

     

     

     

     

     

     

  • 相关阅读:
    TensorRT量化实战课YOLOv7量化:YOLOv7-QAT量化
    const和volatile和restict
    nginx 做上网服务代理配置
    HTTP2指纹识别(一种相对不为人知的网络指纹识别方法)
    基于python下django框架 实现校园教室图书馆座位预约系统详细设计
    Kafka为什么性能这么快?4大核心原因详解
    webrtc iOS--mediasoup
    leetcode刷题(127)——1575. 统计所有可行路径
    [附源码]Python计算机毕业设计Django“小世界”私人空间
    2023版 STM32实战2 按键驱动(电路与代码都讲解)
  • 原文地址:https://blog.csdn.net/qq_42233059/article/details/126570530