pytorch对向量的操作

目录

一 创建向量

1.1 创建未初始化的向量

1.2 生成初始化的向量

1.3 指定数据类型的向量

1.4 直接根据数据创建

1.5 返回数组的大小

1.6 附其他常见操作

1.6.1 生成全0矩阵

1.6.2 生成全1矩阵

1.6.3 生成单位矩阵

1.6.4 根据步长生成矩阵

二 向量的基本运算

2.1 向量的加法

2.1.1 变量直接相加

2.1.2 利用函数

2.2 共用内存

2.3 改变向量的维度

2.4 输出特定的行与列

2.5 一些常用的操作

2.5.1 求矩阵的迹

2.5.2 求逆矩阵

2.5.3 矩阵的乘法

2.5.4 矩阵的转置


 

在深度学习中,向量扮演着重要的角色。向量是一种数据结构,可以视为标量值的列表。这些标量值被称为向量的元素或分量。当向量用于表示数据集中的样本时,它们的值具有特定的现实意义。例如,在训练模型以预测贷款违约风险时,可以将每个申请人与一个向量关联,该向量的分量与申请人的收入、工作年限、过往违约次数和其他因素相对应。

  在深度学习中,输入输出向量尤其重要。输入向量是训练数据的表示形式,而输出向量则是神经网络对数据的预测结果。这些向量在自然语言处理和回归问题中也发挥了关键作用。在自然语言处理问题中,输出向量可以表示文本的情感极性、情感倾向等,用于情感分析和文本分类。在回归问题中,输出向量通常表示预测的连续值,如房价、股票价格等。

  深度学习中的优秀输入输出向量的选择和处理,可以提高神经网络的训练效果和预测准确性。此外,通过使用向量,可以对数据进行降维或升维,从而更好地适应不同的模型和算法。向量的内积和外积等运算也常用于机器学习和数据分析中。

一 创建向量

1.1 创建未初始化的向量

  在PyTorch中,如果你想创建一个未初始化的向量,可以使用torch.empty构造函数来创建一个空的向量。默认情况下,创建的向量的元素是未初始化的,即它们的值是不确定的。

import torch
x=torch.empty(5,3)
print(x)
tensor([[9.6429e-39, 8.4490e-39, 8.7245e-39],
        [1.1112e-38, 8.9082e-39, 9.5510e-39],
        [8.7245e-39, 8.4490e-39, 1.0561e-38],
        [1.0286e-38, 1.0194e-38, 1.0194e-38],
        [9.0918e-39, 1.1112e-38, 9.5511e-39]])

生成了五行三列未初始化的向量

1.2 生成初始化的向量

在PyTorch中,你可以使用torch.rand来创建初始化的向量。

import torch
x=torch.rand(5,3)
print(x)

生成了五行三列0到1的向量

tensor([[0.2591, 0.1537, 0.4286],
        [0.2487, 0.1322, 0.4148],
        [0.4886, 0.5728, 0.1482],
        [0.9155, 0.7718, 0.1815],
        [0.5859, 0.2114, 0.9942]])

1.3 指定数据类型的向量

可以使用detype指定生成向量的类型

import torch
x=torch.zeros(5,3,dtype=torch.int)
print(x)

生成的向量及类型如下图

tensor([[0, 0, 0],
        [0, 0, 0],
        [0, 0, 0],
        [0, 0, 0],
        [0, 0, 0]], dtype=torch.int32)

1.4 直接根据数据创建

import torch
x=torch.Tensor([2.2,1])
print(x)

运行结果

tensor([2.2000, 1.0000])

1.5 返回数组的大小

在PyTorch中,可以使用torch.Tensor对象的shape属性来获取向量的形状。shape属性返回一个元组,表示张量的维度大小。

import torch
x=torch.Tensor([2.2,1])
print(x)
print(x.size())
print(x.shape)

返回结果如图所示

tensor([2.2000, 1.0000])
torch.Size([2])
torch.Size([2])

1.6 附其他常见操作

1.6.1 生成全0矩阵

  全0矩阵是一种特殊的矩阵,其中所有元素的值均为0。它通常用于表示某些数学运算中的初始状态,或者作为一种占位符,等待将来填充具体的值。在任何操作中,全0矩阵都不会改变,因为它代表的是“无”或者“零”。如果对全0矩阵进行加、减、乘等运算,结果还是全0矩阵。

import torch
x=torch.zeros([3,4])
print(x)

1.6.2 生成全1矩阵

  全1矩阵是指每个元素都为1的矩阵。这种矩阵在许多领域中都有重要的应用,例如图像处理、计算机图形学、神经网络等。在状态表示中,全1矩阵可以表示所有状态均可用的情况。

import torch
x=torch.ones([3,4])
print(x)

1.6.3 生成单位矩阵

  单位矩阵是一种特殊的矩阵,它从左上角到右下角的对角线(称为主对角线)上的元素均为1,除此以外全都为0。任何矩阵乘以单位矩阵都等于其自身,单位矩阵因此在高等数学中也有广泛应用。

import torch
x=torch.eye(5)
print(x)

1.6.4 根据步长生成矩阵

起点为s,终点为e,步长为step

import torch
print(torch.arange(1,4,0.5))

生成结果

tensor([1.0000, 1.5000, 2.0000, 2.5000, 3.0000, 3.5000])

二 向量的基本运算

2.1 向量的加法

  矩阵的加法运算规则是,对两个矩阵A和B,只有当它们具有相同的行数和列数时,才能进行加法运算,即A+B。矩阵加法的运算规律包括交换律和结合律。交换律是指A+B=B+A;结合律是指(A+B)+C=A+(B+C)。

2.1.1 变量直接相加

import torch
x=torch.Tensor([1,1])
y=torch.Tensor([2,2])
print(x+y)

运行结果

tensor([3., 3.])

2.1.2 利用函数

import torch
x=torch.Tensor([1,1])
y=torch.Tensor([2,2])
print(torch.add(x,y))

2.2 共用内存

import torch
x=torch.Tensor([1,1])
y=x
x+=1
print(x,y)

注意此时x,y是共用内存的,依旧是说对y进行操作,同时也对x进行了操作

观察输出结果

tensor([2., 2.]) tensor([2., 2.])

我们可以建立副本来解决这个问题

import torch
x=torch.Tensor([1,1])
y=x.clone()
x+=1
print(x,y)

此时他的输出结果为

tensor([2., 2.]) tensor([1., 1.])

2.3 改变向量的维度

import torch
x=torch.Tensor([[1,1],
               [3,3],
               [2,3]])
y=x.view(-1,1)          #-1是指根据列自动调整行的输出
print(y.size())

可以观察到

torch.Size([6, 1])

原本2*3的矩阵转化为了6*1的矩阵

需要注意的是这仅仅只是对观察的方向进行了改变,原数组的维度并没有发生改变

2.4 输出特定的行与列

import torch
x=torch.Tensor([[1,1],
               [3,3],
               [2,3]])
print(x[0:3,1])

我们可以通过数组的操作访问元素

其中0:3表示输出第0到2行的元素,1表示第1列的元素

2.5 一些常用的操作

2.5.1 求矩阵的迹

矩阵的迹(Trace)是指矩阵的对角线元素之和。对于一个方阵(行数和列数相等的矩阵),迹是所有对角线元素的总和。在数学中,迹被用于许多不同的领域,包括线性代数、矩阵论、二次型和张量等。公式为

tr(a)=\sum a[i,i]

import torch
x=torch.Tensor([[1,1,3],
               [3,3,2],
               [2,3,4]])
trace=torch.trace(x)
print(trace)

2.5.2 求逆矩阵

在数学中,一个矩阵的逆矩阵是一个特定的矩阵,它与原矩阵相乘会得到单位矩阵。单位矩阵是一个方阵,其中对角线上的元素都是1,其他元素都是0。有

A*A^{-1}=E

import torch
x=torch.Tensor([[1,1],
               [1,2]])
print(x.inverse())

2.5.3 矩阵的乘法

矩阵乘法是一种线性代数运算,用于计算两个矩阵的乘积。设A是一个m×n矩阵,B是一个n×p矩阵,则A与B的乘积AB是一个m×p矩阵。

具体来说,矩阵乘法的操作规则如下:

  1. 首先,需要确认第一个矩阵的列数(column)和第二个矩阵的行数(row)相同。
  2. 其次,从第一个矩阵的第一个元素开始,与第二个矩阵的第一个列元素相乘,并加到一起,得到新矩阵的第一行第一列元素。
  3. 以此类推,可以计算新矩阵的其他元素。
import torch
x=torch.Tensor([[1,1],
               [1,2]])
y=torch.Tensor([[1,2],
               [3,3]])
print(x.mm(y))

2.5.4 矩阵的转置

  矩阵的转置是将矩阵的行列互换,具体操作是:将矩阵A的所有元素绕着一条从第1行第1列元素出发的右下方45度的射线作镜面反转,即得到A的转置。

import torch
x=torch.Tensor([[1,1,3],
               [1,2,2]])
y=x.t()
print(y)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值