人工智能 Tonsor 张量 创建和转换

张量从 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)))<
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值