六 Tensor常见操作
Tensor:多维数组,用于存储和操作数据
1 获取元素值
data.item():单个元素tensor转为python数值
import torch
#标量
x=torch.tensor(1)
print(x.item())
#一阶
x=torch.tensor([100])
print(x.item())
#如果输入的数据超过1个,就不能用item函数取
#取出来的是基本数据的数字
x=torch.tensor([1,2])
print(x.item())
2 元素值运算
加减乘除幂次方取余取整等,带有_的方法会替换原始值
import torch
def test01():
#带_结尾的函数基本都是直接操作原tensor
x=torch.manual_seed(66)
x=torch.randint(1,10,(3,3))
print(x)
#加
x2=x.add(100)#返回一个新的数
print(x2)
x.add_(200)
print(x)
#减
x=x.sub(1)
print(x)
x.sub_(100)
print(x)
#乘
x=x.mul(2)
print(x)
x=x.mul_(2)
print(x)
#除
x=x.div(4)
print(x)
x.div_(2)
print(x)
x=x.pow(2)#平方
print(x)
x=x**2
print(x)
x=x+10
print(x)
x=x-10
print(x)
x=x*10
print(x)
x=x/2
print(x)
x=x//2#取整
print(x)
x=x%2#取余
print(x)
x-=100#x=x-100
print(x)
if __name__=='__main__':
test01()
3 阿达玛积
矩阵对应位置的元素相乘,mul函数或者*
import torch
def test():
x1=torch.tensor([1,2],
[3,4])
x2=torch.tensor([1,2],
[3,4])
#阿达玛积时必须形状一样
x3=x1*x2
print(x3)
x4=x1.mul(x2)
print(x4)
if __name__=='__main__':
test()
4 Tensor相乘
将两个向量映射为一个标量,如果第一个矩阵是(N,M),那么第二个矩阵的shape必须是(M,P),最后两个矩阵的点积运算的shape为(N,P),使用@或者matmul完成
mm只能用于2维矩阵
import torch
def test2():
x1=torch.tensor([1,2],
[3,4])
x2=torch.tensor([1,2],
[3,4])
x3=torch.matmul(x1,x2)
x3=x1.matmul(x2)
x3=x1 @ x2
x3=x1.mm(x2)
print(x3)
x=torch.randint(1,4,(3,3,3))
print(x)
x2=torch.tensor(1,4,(3,3,3))
print(x2)
x3=x@x2
x3=x.matmul(x2)
print(x3)
if __name__=='__main__':
test2()
5 索引操作
1.简单索引
根据指定的下标选取数据
import torch
def test():
data = torch.randint(0, 10, (3, 4))
print(data)
# 1. 行索引
print("行索引:", data[0])
# 2. 列索引
print("列索引:", data[:, 0])
# 3. 固定位置索引:2种方式都行
print("索引:", data[0, 0], data[0][0])
if __name__ == "__main__":
test()
2.列表索引
import torch
def test():
torch.manual_seed(66)
x=torch.randint(1,10,(5,5,3))#5个模块,模块里面的size是(5×3)
print(x)
print(x.shape)
print(x[1])#取下标为1,实际上排序为第2个的模块
print(x[1,2])#取模块下标为1行数下标为2的数据
p

最低0.47元/天 解锁文章
3843

被折叠的 条评论
为什么被折叠?



