Tensor的初始化
矩阵的元素运算是指矩阵在元素级别的加、减、乘、除运算。
(1)元素相加和相减。
条件:矩阵的行数和列数必须相同。
数学公式:
(2)矩阵数乘:一个数乘以一个矩阵。
数学公式:
(3)矩阵所有元素求和。
数学公式:
(4)矩阵所有元素之积
数学公式:
(5)矩阵各元素的n次幂 :n=3。
数学公式:
(1)矩阵各元素的积 :矩阵的点乘同维对应元素的相乘。当矩阵的维度不同时,会根据一定的广播规则将维数扩充到一致的形式。
数学公式:
(2)矩阵内积
数学公式:
(3)向量内积、外积
向量内积:
向量外积:
(4)向量叉乘(叉积) :运算结果是一个向量而不是一个标量。并且两个向量的叉积与这两个向量组成的坐标平面垂直。
数学公式:
其中
根据i、j、k间关系,有:
数学公式:
矩阵的逆
注意:矩阵不满秩,则会报错
矩阵的伪逆
矩阵的秩
矩阵的迹
可逆矩阵的求解
矩阵的特征向量和特征值:
这里 是实对称矩阵, 是特征向量, 是特征值。下面我们使用Pytorch求取矩阵的特征值和特征向量。
PyTorch是一个开源的Python机器学习库,基于Torch,用于自然语言处理等应用程序。
2017年1月,由Facebook人工智能研究院(FAIR)基于Torch推出了PyTorch。它是一个基于Python的可续计算包,提供两个高级功能:
1、具有强大的GPU加速的张量计算(如NumPy);
2、包含自动求导系统的深度神经网络。
优点
1、PyTorch是相当简洁且高效快速的框架;
2、设计追求最少的封装;
3、设计符合人类思维,它让用户尽可能地专注于实现自己的想法;
4、与google的Tensorflow类似,FAIR的支持足以确保PyTorch获得持续的开发更新;
5、PyTorch作者亲自维护的论坛供用户交流和求教问题;
6、入门简单。
扩展资料:
模块
1、Autograd模块
PyTorch使用一种称为自动微分的方法。记录器记录已执行的 *** 作,然后向后重播以计算梯度。当构建神经网络以通过计算前向传递参数的微分来节省一个时间时,此方法特别强大。
2、Optim模块
torchoptim是实现用于构建神经网络的各种优化算法的模块。大多数常用方法已受支持,因此无需从头开始构建它们。
3、nn模块
PyTorchautograd使定义计算图和获取梯度变得容易,但是原始的autograd对于定义复杂的神经网络而言可能太低了。这是nn模块可以提供帮助的地方。
如图搭建简单的分类网络,以二分类为例:
2,10,2分别代表:输入的特征数,隐藏神经元的个数,输出的概率(one-hot编码)
prediction=net(x):概率可以为负数
[06,-01]:表示预测为0,最大概率的索引为0
[-008,65]:表示预测为1,最大概率的索引为1
loss_func=torchnnCrossEntropyLoss()
loss_func中输入的是直接从网络中输出的量(prediction=net(x))
为了查看其预测的标签,通过打印这句话即可:
print(torchmax(Fsoftmax(prediction), 1)[1])
1、Fsoftmax(prediction):将二分类概率都变成0-1之间的数,且相加为1
[03,07]:预测为1
[06,04]:预测为0
2、torchmax(Fsoftmax(prediction), 1):
torchmax(out,1):按行取最大,每行的最大值放到一个矩阵中
torchmax(out,0):按列取最大,每列的最大值放到一个矩阵中
这句话最后返回两个tensor:
values=tensor(最大的概率值)
indices=tensor(最大概率值的索引)
3、torchmax(Fsoftmax(prediction), 1)[1]:
只保留indices的tensor
实例:
注:在有的地方我们会看到torchmax(a, 1)datanumpy()的写法,这是因为在早期的pytorch的版本中,variable变量和tenosr是不一样的数据格式,variable可以进行反向传播,tensor不可以,需要将variable转变成tensor再转变成numpy。现在的版本已经将variable和tenosr合并,所以只用torchmax(a,1)numpy()就可以了。
参考链接:>
这里主要进行分词,词汇表构造以及词汇索引构造
包括 batch_size, embedding_size, 窗口大小和词汇表大小
这里就是将数据包装为torchutilsdataDataset类,并且用DataLoader类来加载数据
假设所有文本分词,转为索引之后的 list 如下图所示
根据论文所述,我这里设定 window size=2,即每个中心词左右各取 2 个词作为背景词,那么对于上面的 list,窗口每次滑动,选定的中心词和背景词如下图所示
那么 skip_grams 变量里存的就是中心词和背景词一一配对后的 list,例如中心词 2,有背景词 0,1,0,1,一一配对以后就会产生 [2,0],[2,1],[2,0],[2,1]。skip_grams 如下图所示
由于 Word2Vec 的输入是 one-hot 表示,所以我们先构建一个单位矩阵,利用 npeye(rows) 方法,其中的参数 rows 表示单位矩阵的行数,对于这个问题来说,语料库中总共有多少个单词,就有多少行。
然后根据 skip_grams 每行第一列的值,取出相应的行。将这些取出的行,append 到一个 list 中去,最终的这个 list 就是所有的样本 X(即one-hot表示)。标签不需要 one-hot 表示,只需要类别值,所以只用把 skip_grams 中每行的第二列取出来存起来即可
最后第三步就是构建 dataset,然后定义 DataLoader
模型架构图:
注意,隐层的激活函数是线性的,相当于没做任何处理。训练这个神经网络,用反向传播算法(本质上是链式求导)
以上就是关于Pytorch之线性代数全部的内容,包括:Pytorch之线性代数、pytorch是什么_pytorch是什么、pytorch 中分类网络损失函数等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)