基于PyTorch的深度学习入门教程_sequence_models_tutorial

本文是PyTorch的深度学习序列模型教程,主要讲解了LSTM网络在处理序列数据时如何维护状态,并通过一个词性标注的LSTM模型示例进行说明,探讨了如何利用字符级信息增强单词表示。
摘要由CSDN通过智能技术生成

摘要

Sequence Models and Long-Short Term Memory Networks
===================================================

序列模型和LSTM网络

我们已经看到了各种前馈网络,也就是说,网络根本没有维护任何状态。这可能不是我们想要的行为。序列模型是NLP的核心:它们是在你的输入之间存在某种依赖关系的模型。序列模型的经典例子是词性标注的隐马尔可夫模型。另一个例子是条件随机场。

递归神经网络是一种保持某种状态的网络。例如,它的输出可以用作下一个输入的一部分,这样当网络通过序列时,信息就可以沿着序列传播。在LSTM的情况下,对于序列中的每个元素,都有一个对应的*hidden state*:h_t,它原则上可以包含序列中较早的任意点的信息。我们可以使用隐藏状态来预测语言模型中的单词、词性标记和其他许多东西。

LSTM's in Pytorch

在开始示例之前,请注意一些事情。Pytorch的LSTM期望它的所有输入都是三维张量。这些张量的轴的语义很重要。第一个轴是序列本身、第二个索引mini-batch和第三个索引输入的元素。我们还没有讨论过mini-batching,所以让我们忽略它,假设在第二个轴上总是只有一个维度。如果我们想让序列模型遍历" the cow jump "这句话,我们的输入应该是这样的

\begin{bmatrix} \overbrace{q_\text{The}}^\text{row vector} \\ q_\text{cow}\\q_\text{jumped} \end{bmatrix}

记住还有一个尺寸为1的第二维,此外,你可以一次处理一个序列,在这种情况下,第一个轴的大小也是1。

让我们看一个简单的例子。

import torch
import torch.nn as nn
import torch.nn.functional as F
import torch.optim as optim

torch.manual_seed(1)

######################################################################

lstm = nn.LSTM(3, 3)  # 输入维度为3, 输出得维度也为3
inputs = [torch.randn(1, 3) for _ in range(5)]  # make a sequence of length 5
print(inputs)
>>>[tensor([[-0.5525,  0.6355, -0.3968]]), tensor([[-0.6571, -1.6428,  0.9803]]), tensor([[-0.0421, -0.8206,  0.3133]]), tensor([[-1.1352,  0.3773, -0.2824]]), tensor([[-2.5667, -1.4303,  0.5009]])]

# initialize the hidden state.
hidden = (torch.randn(1, 1, 3),
          torch.randn(1, 1, 3))
for i in inputs:
    # 一步一个元素地遍历序列。
    # 在每一步之后
好的,以下是网页的中文翻译: # 序列模型和长短时记忆网络 ## 序列数据和循环神经网络 自然语言处理中的大多数任务都涉及到对序列数据的处理。序列数据是指按照一定顺序排列的数据,比如一句话中的单词、一篇文章中的句子等。 传统的深度学习模型很难处理序列数据,因为它们无法考虑到序列中前后单元之间的关系。为了解决这个问题,循环神经网络 (Recurrent Neural Networks, RNNs) 被提出。 循环神经网络是一种具有记忆功能的神经网络,它可以处理序列数据,同时考虑到了序列中前后单元之间的关系。RNNs 在自然语言处理中得到了广泛应用,比如文本分类、语音识别、机器翻译等。 ## 长短时记忆网络 尽管 RNNs 在处理序列数据方面表现很好,但是它们存在消失梯度 (Vanishing Gradient) 问题,当序列长度较长时,这个问题会变得尤为严重。长短时记忆网络 (Long Short-Term Memory, LSTM) 是一种能够缓解消失梯度问题的循环神经网络。 LSTM 通过引入门 (gate) 机制,控制了信息的流动,从而保留了序列中的长期依赖关系。LSTM 在自然语言处理中的表现非常优秀,比如情感分析、命名实体识别等任务。 ## PyTorch 中的 LSTMPyTorch 中,我们可以使用 torch.nn.LSTM 类来构建 LSTM 模型。LSTM 类的参数说明如下: ```python torch.nn.LSTM(input_size, hidden_size, num_layers, bias, batch_first, dropout, bidirectional) ``` 其中, - `input_size`:输入数据的特征维度。 - `hidden_size`:隐状态的特征维度。 - `num_layers`:循环神经网络的层数。 - `bias`:是否使用偏置项。 - `batch_first`:是否将 batch 放在第一维。 - `dropout`:是否进行 dropout。 - `bidirectional`:是否使用双向 LSTM。 下面是一个使用 LSTM 进行文本分类的示例:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值