文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Pytorch深度学习实战3-2:什么是张量?Tensor的创建与索引

2023-08-31 20:11

关注

目录

1 什么是张量?

张量(Tensor)是多维数组结构,在人工智能领域应用广泛,例如输入彩色图片即是3维张量——RGB三维且每维都是二维平面像素矩阵。

下面这张表直观地总结了张量的形式,这张表可以解决大部分的张量理解问题

维数图例名称
0在这里插入图片描述标量
1在这里插入图片描述向量
2在这里插入图片描述矩阵
3在这里插入图片描述三阶张量
N N N在这里插入图片描述 N N N阶张量

2 Pytorch数据类型与转化

数据类型CPU TensorGPU Tensor
32位浮点torch.FloatTensortorch.cuda.FloatTensor
64位浮点torch.DoubleTensortorch.cuda.DoubleTensor
16位半精度浮点N/Atorch.cuda.HalfTensor
8位无符号整型torch.ByteTensortorch.cuda.ByteTensor
8位有符号整型torch.CharTensortorch.cuda.CharTensor
16位有符号整型torch.ShortTensortorch.cuda.ShortTensor
32位有符号整型torch.IntTensortorch.cuda.IntTensor
64位有符号整型torch.LongTensortorch.cuda.LongTensor

Pytorch中Tensor数据类型的转换可以使用

举例如下:

a = torch.Tensor(2, 2)b = a.type(torch.DoubleTensor)c = a.type_as(b)>> a: tensor([[0.0000e+00, 0.0000e+00],              [8.4078e-45, 0.0000e+00]])>> b: tensor([[0.0000e+00, 0.0000e+00],              [8.4078e-45, 0.0000e+00]], dtype=torch.float64)>> c: tensor([[0.0000e+00, 0.0000e+00],              [8.4078e-45, 0.0000e+00]], dtype=torch.float64)

3 张量Tensor的创建

张量Tensor主要的创建方法如下所示。

3.1 类型创建

创建方法

实例

b = torch.cuda.DoubleTensor(2,2)>> b: tensor([[0., 0.],         [0., 0.]], device='cuda:0', dtype=torch.float64)

3.2 序列转换

创建方法

实例

a = torch.DoubleTensor([[1, 2],[3, 4]])>> a: tensor([[1., 2.],        [3., 4.]], dtype=torch.float64)

3.3 0/1张量

创建方法

实例

a = torch.ones(2,2)>> a: tensor([[1., 1.],        [1., 1.]])

3.4 对角张量

创建方法

实例

a = torch.eye(2,2)>> a: tensor([[1., 0.],        [0., 1.]])

3.5 正态张量

创建方法

实例

a = torch.randn(2,2)>> a: tensor([[-0.0451, -0.1602],            [-0.1116,  0.8266]])

3.6 随机向量

创建方法

实例

a = torch.randperm(3)>> a: tensor([2, 0, 1])

3.7 线性张量

创建方法

实例

a = torch.arange(1,8,3)>> tensor([1, 4, 7])b = torch.linspace(1,8,3)>> tensor([1.0000, 4.5000, 8.0000])

4 张量Tensor的索引

对于一个给定Tensor,可通过Tensor的shape属性或size()方法查看其维度,通过numel()方法查看元素总数

a = torch.eye(3,3)print("shape维度", a.shape)print("size维度", a.size())print("numel元素个数", a.numel())>> shape维度 torch.Size([3, 3])>> size维度 torch.Size([3, 3])>> numel元素个数 9

Tensor维度按从左到右顺序分配dim索引号如下,新增维度的dim索引号总为0

在这里插入图片描述

具体的索引方式如下,设a=torch.Tensor([[0,1],[2,3]]))

4.1 下标索引

索引方法

实例

a[1]>> tensor([2., 3.])a[0,1]>> tensor(1.)

4.2 条件索引

索引方法

实例

a>0>> tensor([[False,  True],        [ True,  True]])a[a>0]>> tensor([1., 2., 3.])torch.nonzero(a)>> tensor([[0, 1],        [1, 0],        [1, 1]])

4.3 附加控制索引

索引方法

实例

torch.where(a > 1, torch.full_like(a, 1), a)>> tensor([[0., 1.],        [1., 1.]])a.clamp(1,2)>> tensor([[1., 1.],        [2., 2.]])

🔥 更多精彩专栏


👇源码获取 · 技术交流 · 抱团学习 · 咨询分享 请联系👇

来源地址:https://blog.csdn.net/FRIGIDWINTER/article/details/128883385

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     801人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     348人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     311人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     432人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     220人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯