PyTorch入门学习-3.语言模型简介

本文介绍了PyTorch中构建语言模型的基础知识,包括语言模型的概念、torchtext的使用方法,以及如何利用torch.nn创建RNN、LSTM和GRU模型进行训练和评估。通过实例展示了从数据预处理到模型训练、验证和测试的全过程。
摘要由CSDN通过智能技术生成

1. 语言模型概念
语言模型可以对一段文本的概率进行估计,对信息检索,机器翻译,语音识别等任务有着重要的作用。
对于语言序列,语言模型就是计算该序列的概率,即 :
在这里插入图片描述
从机器学习的角度来看:语言模型是对语句的概率分布的建模。
通俗解释:判断一个语言序列是否是正常语句,即是否是人话 。
2. torchtext的基本使用

import torchtext
from torchtext.vocab import Vectors
import torch
import numpy as np
import random

USE_CUDA = torch.cuda.is_available()

# 为了保证实验结果可以复现,我们经常会把各种random seed固定在某一个值
random.seed(53113)
np.random.seed(53113)
torch.manual_seed(53113)
if USE_CUDA:
    torch.cuda.manual_seed(53113)

BATCH_SIZE = 32
EMBEDDING_SIZE = 650
MAX_VOCAB_SIZE = 50000

说明:

继续使用上次的text8作为我们的训练,验证和测试数据
TorchText的一个重要概念是Field,它决定了你的数据会如何被处理。我们使用TEXT这个field来处理文本数据。我们的TEXT field有lower=True这个参数,所以所有的单词都会被lowercase。
torchtext提供了LanguageModelingDataset这个class来帮助我们处理语言模型数据集。
build_vocab可以根据我们提供的训练数据集来创建最高频单词的单词表,max_size帮助我们限定单词总量。

BPTTIterator可以连续地得到连贯的句子,BPTT的全程是back propagation through time。
TEXT = torchtext.data.Field(lower=True)
train, val, test = torchtext.datasets.LanguageModelingDataset.splits(path=".", 
    train="text8.train.txt", validation="text8.dev.txt", test="text8.test.txt", text_field=TEXT)
TEXT.build_vocab(train, max_size=MAX_VOCAB_SIZE)
print("vocabulary size: {}".format(len(TEXT.vocab)))

VOCAB_SIZE = len(TEXT.vocab)
train_iter, val_iter, test_iter = torchtext.data.BPTTIterator.splits(
    (train, val, test), batch_size=BATCH_SIZE, device=-1, bptt_len=32, repeat=False, shuffle=True)

结果:

vocabulary size: 50002

说明:

为什么我们的单词表有50002个单词而不是50000呢?因为TorchText增加了两个特殊的token,表示未知的单词,表示padding。
模型的输入是一串文字,模型的输出也是一串文字,他们之间相差一个位置,因为语言模型的目标是根据之前的单词预测下一个单词。

3. torch.nn的一些基本模型
Linear
RNN
LSTM
GRU
(1)定义模型
继承nn.Module
初始化函数
forward函数
其余可以根据模型需要定义相关的函数

import torch
import torch.nn as nn


class RNNModel(nn.Module):
    """ 一个简单的循环神经网络"""

    def __init__(self, rnn_type, ntoken, ninp, nhid, nlayers, dropout=0.5):
        ''' 该模型包含以下几层:
            - 词嵌入层
            - 一个循环神经网络层(RNN, LSTM, GRU)
            - 一个线性层,从hidden state到输出单词表
            - 一个dropout层,用来做regularization
        '''
        super(RNNModel, self).__init__()
        self.drop = nn.Dropout(dropout)
        self.encoder = nn.Embedding(ntoken, ninp)
        if rnn_type in ['LSTM', 'GRU']:
            self.rnn = getattr(nn, rnn_type)(ninp, nhid, nlayers, dropout=dropout)
        el
深度学习pytorch极简入门》是一本PDF教程,旨在帮助初学者快速入门PyTorch深度学习框架。该教程以简洁清晰的语言介绍了PyTorch的基本概念和使用方法,帮助读者了解深度学习的基本原理和PyTorch框架的核心功能。 教程的内容主要分为四个部分。首先,它介绍了深度学习的基本概念和原理,例如神经网络、前向传播和反向传播算法等。其次,教程详细介绍了PyTorch框架的安装和环境搭建,包括如何安装PyTorch和相关的依赖库。然后,教程演示了如何使用PyTorch进行数据加载和预处理,以及如何构建和训练一个简单的神经网络模型。最后,教程还介绍了如何使用PyTorch进行模型评估和保存。 这本教程的特点在于简明扼要。它用简单易懂的语言解释了复杂的概念和原理,避免了过多的数学推导和技术术语的使用。此外,教程通过一系列的例子和实践任务,让读者可以亲自动手实践,并逐步建立起对PyTorch的理解和掌握能力。 总结来说,《深度学习pytorch极简入门》是一本适合初学者入门PyTorch教程。它以简洁明了的方式介绍了PyTorch的基本概念和使用方法,并通过实践任务帮助读者逐步掌握深度学习PyTorch框架的基本原理和技巧。无论是对于想要了解深度学习的初学者还是对于已经熟悉其他深度学习框架的人来说,这本教程都是一个不错的选择。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值