[pytorch笔记] pytorch简介,词向量,语言模型,RNN和LSTM

pytorch简介

Pytorch的两个操作对象
1. Tensor
Tensor就是张量的英文,表示多维的矩阵,比如一维就是向量,二维就是一般的矩阵等等,Pytorch里面处理的单位就是一个一个的Tensor。
2.Variable
Variable提供了自动求导功能,也就是可以自动给你你要的参数的梯度。
本质上Variable和Tensor没有区别,不过Variabel会放入一个计算图,然后进行前向传播,反向传播以及自动求导。
一个Variable里面包含着三个属性,data,grad和creator,其中creator表示得到这个Variabel的操作,比如乘法或者加法等等,grad表示方向传播的梯度,data表示取出这个Variabel里面的数据。

张量创建方式:

  1. 使用torch.tensor()创建
    在这里插入图片描述
  2. 使用torch的api创建tensor
    a. torch.empty(3,4) 创建3行4列的空的tensor,会用无用数据进行填充
    b. torch.ones([3,4]) 创建3行4列的全为1的tensor c. torch.zeros([3,4]) 创建3行4列的全为0的tensor
    d. torch.eye(3) 创建3阶对角方阵
    e. torch.arange(0,10,2) 创建从0到10,步长为2的一维张量
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  3. 创建随机值的方式
    a. torch.rand([3,4]) 创建3行4列的tensor,随机值的区间是[0,1),均匀分布
    b. torch.randn([3,4]) 创建3行4列的tensor,标准正态分布,均值为0,方差为1
    c. torch.randint(0,10,[3,4]) 创建3行四列的随机整数的tensor,随机值的区间是[0,10)

在这里插入图片描述在这里插入图片描述在这里插入图片描述
张量的方法和属性:
a. 数据中只有一个元素的时候,取值:tensor.item()
b. 获取形状:
i. tensor.size()
ii. tensor.size(-1) #获取最后一个维度的形状
c. 形状的变化:tensor.view([shape])
d. 获取阶数:tensor.dim()
e. 常用的计算
max() / min() / sqrt() / sum() / prod() / mean() / add() / sub() / mul() / div()
f. 转置
i. 二维:tensor.t() tensor.transpose(0,1)
ii. 高维:tensor.transpose(0,1) tensor.permute(0,2,1)
g. 取值和切片
i. t[1,2,3]
ii. t[1,:,:]
iii. t[1,2,3]=100
原地操作:很多张量的内置方法都有一个“下划线版本”,这个方法会直接改变调用此方法的张量的值。

在这里插入图片描述在这里插入图片描述在这里插入图片描述
Pytorch完成模型常用API

通过api完成模型训练的过程:
i. 实例化模型
ii. 实例化损失函数
ii. 实例化优化器类
iv. 进入循环:

  1. 梯度置为0
  2. 调用模型得到预测值
  3. 调用loss函数, 得到损失
  4. loss.backward() 进行梯度计算
  5. optimizer.step() 更新参数

词向量

词向量技术是将词转化成为稠密向量,并且对于相似的词,其对应的词向量也相近。在自然语言处理任务中,首先需要考虑词如何在计算机中表示。通常,有两种表示方式:one-hot representationdistribution representation
one-hot representation把每个词表示为一个长向量。这个向量的维度是词表大小,向量中只有一个维度的值为1,其余维度为0,这个维度就代表了当前的词。 one-hot表示方法将每个词孤立起来,算法对相关词的泛化能力不强。任何两个one-hot向量的内积都是0,所以无法确定词的相关性。
得到的向量是稀疏的,而且维度非常的大。
在这里插入图片描述word embedding指的是将词转化成一种分布式表示,又称词嵌入。把一个维数为所有词的数量的高维空间嵌入到一个维数低得多的连续向量空间中,每个单词或词组被映射为实数域上的向量。
和one-hot编码不同,word embedding使用了浮点型的稠密矩阵来表示token。
在这里插入图片描述在这里插入图片描述学习词嵌入

嵌入矩阵:将词的特征组成矩阵,这个矩阵与独热编码的词语相乘能得到独立的特征词向量。实现了矩阵与独热编码、词向量之间的相互转化,实现了词语转为数字向量,以便进行神经网络迭代更新矩阵E。
在这里插入图片描述

语言模型

word2ves模型将词语转化为词向量,之后可以通过这样进行下游工程应用。可以简单理解为这些算法就是简单神经网络将词语输出为序列。
word2vec的主要原理是基于单词的上下文相关性,对应的算法有两种类型:
Skip-grams
CBOW(连续词袋模型)

1.CBOW
CBOW模型是预测上下文已知的情况下,当前词出现的概率。上下文的选取采用窗口方式,即只将当前词窗口范围内的词作为上下文。中心词概率公式如下:
P(wt|wt-k,wt-(k-1)…,wt-1,wt+1,wt+2…,wt+k)= P(wt|context)
CBOW
2.skip-gram
skip-gram是用中心词来预测周围的词。在skip-gram中,会利用周围的词的预测结果情况,使用GradientDecent来不断的调整中心词的词向量,最终所有的文本遍历完毕之后,也就得到了文本所有词的词向量。

skip-gram

RNN和LSTM

RNN
典型RNN的基本结构如图2.1所示,x是输入数据, s是隐藏层输出,o是网络输出,U是输入到隐藏层的权重值,W是前一时刻隐藏层对当前隐藏层贡献的权重值,V是隐藏层到输出层的权重值。
RNN
LSTM
LSTM,是一种特殊的 RNN,能够学习长期依赖性。
LSTM
LSTM 的前向计算:

遗忘门(forget gate)
它决定了上一时刻的单元状态 c_t-1 有多少保留到当前时刻 c_t

输入门(input gate)
它决定了当前时刻网络的输入 x_t 有多少保存到单元状态 c_t

输出门(output gate)
控制单元状态 c_t 有多少输出到 LSTM 的当前输出值 h_t
LSTM计算公式

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值