张量从 0,1,2,3…

三维的张量,
1.创建张量的方式
- torch.tensor()根据指定数据创建张量
- torch.Tensor()根据形状创建张量,其也可用来创建指定数据的张量
⒉创建线性和随机张量
- torch.arrange()和torch.linspace()创建线性张量
- torch.randn()创建随机张量
3.创建01张量
- torch.ones()创建全1张量
- torch.zeros()创建全0张量
- torch.full()创建全为指定值张量
4.张量元素类型转换
- data.type(torch.DoubleTensor)
- data.double()
5.Tensor 转 ndarray
- torch.tensor([2,3,4]).numpy()
6.ndarray 转 Tensor
- torch.tensor(data)
- torch.from_numpy(data))
7.获取一个值的标量
- data = torch.tensor(10)
- print(data.item()) #只能通过item() 获取
8.张量的点加减乘除取负号∶
- add、sub、mul、div、neg(neg是符号反转,+ 或者 -)
- add_. sub_. mul_.div_.neg_(其中带下划线的版本会修改原数据)
9.张量的乘积运算
- print(a1 @ a2)
- print(torch.matmul(a1, a2))
10 张量运算函数
sum,mean,sqrt,pow,exp,lag等
11 张量的索引
- data = torch.randint(0, 10, [4, 5])
- print(data[0, 2])
- print(data[[0, 1], [1, 2]])
- print(data[1:]) # 获取下标为1行的后面的包括本身 反之 print(data[:1]) 就是获取下标为一行前面的不包括本身
- print(data[1:, :3]) # 取1行以后,每行前3的张量
- print(data[[[0], [1]], [1, 3]]) # 取第0行和第1行,下标是 1和3位置的数组 共4个值
12 多维索引
print(data[0, :, :]) # 共 3个值 第一个值是取第一个矩阵,
print(data[:, 0, :]) # 第二个值取 3个矩阵的第0行
print(data[:, :, 0]) # 第三个值取3个矩阵的 第0列
13 张量的形状调整
- print(data.shape)
- print(data.size())
- print(data.reshape(2, 10)) # 将矩阵(张量)45 变成210
- print(data.reshape(5, 4)) # 将矩阵(张量)45 变成54
- print(data.is_contiguous()) # 判断是否是连续内存,如果是True 才可以使用view函数
- print(data.view(2, 10))#view的功能和reshape一样,但是view必须在连续内存中,reshape可以再非连续内存。可能存在效率问题。再使用view
14 降为 升位
- x = torch.randn(1, 2, 1, 4, 6) # torch.Size([1, 2, 1, 4, 6])
- torch.unsqueeze(x, dim=0).shape # 从0的位置添加一个维度 torch.Size([2, 4, 6])
- torch.unsqueeze(x, dim=1).shape # 1 从第一的位置添加一个维度 torch.Size([1, 2, 4, 6])
- orch.unsqueeze(x, dim=-1).shape # -1 是从尾部加一个维度 torch.Size([2, 4, 6, 1])
15 维度交换 transpose 交换2个,permute交换多个
- x = torch.tensor(np.random.randint(0, 10, [3, 4, 5]))
- x.shape # torch.Size([3, 4, 5])
- torch.transpose(x, 1, 2).shape #维度 1和2进行了交换 torch.Size([3, 5, 4])
- torch.permute(x, [2, 0, 1]).shape #多维度交换按照数组顺序交换 torch.Size([5, 3, 4])
测试代码
import torch
import numpy as np
# ======= 创建张量==========
# 张量 Tensor 的两种创建方式 小写的torch.tensor
print(torch.tensor(10))
# tensor(10)
print(torch.tensor(np.random.randn(2, 3)))
# tensor([[ 0.4798, -0.3475, -0.1929],
# [-0.6836, 1.1279, -0.3356]], dtype=torch.float64)
print(torch.tensor([[2, 3, 4], [3, 4, 5]]))
# tensor([[2, 3, 4],
# [3, 4, 5]])
# 张量 Tensor 的第二种创建方式 大写的torch.Tensor
print(torch.Tensor(10))
print(torch.Tensor([10]))
print(torch.Tensor(2, 3))
print(torch.Tensor(np.random.randn(2, 3)))<

最低0.47元/天 解锁文章

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



