广告位联系
返回顶部
分享到

PyTorch定义Tensor及索引和切片介绍(最新推荐)

python 来源:互联网 作者:佚名 发布时间:2023-09-10 22:19:29 人浏览
摘要

深度学习--PyTorch定义Tensor 一、创建Tensor 1.1未初始化的方法 ?这些方法只是开辟了空间,所附的初始值(非常大,非常小,0),后面还需要我们进行数据的存入。 torch.empty():返回一个

深度学习--PyTorch定义Tensor

一、创建Tensor

1.1未初始化的方法

?这些方法只是开辟了空间,所附的初始值(非常大,非常小,0),后面还需要我们进行数据的存入。

torch.empty():返回一个没有初始化的Tensor,默认是FloatTensor类型。

1

2

3

4

5

6

7

8

9

10

#torch.empty(d1,d2,d3)函数输入的是shape

torch.empty(2,3,5)

  

#tensor([[[-1.9036e-22,  6.8944e-43,  0.0000e+00,  0.0000e+00, -1.0922e-20],

#         [ 6.8944e-43, -2.8812e-24,  6.8944e-43, -5.9272e-21,  6.8944e-43],

#         [ 0.0000e+00,  0.0000e+00,  0.0000e+00,  0.0000e+00,  0.0000e+00]],

#

#        [[ 0.0000e+00,  0.0000e+00,  0.0000e+00,  0.0000e+00,  0.0000e+00],

#         [ 0.0000e+00,  0.0000e+00,  1.4013e-45,  0.0000e+00,  0.0000e+00],

#         [ 0.0000e+00,  0.0000e+00,  0.0000e+00,  0.0000e+00,  0.0000e+00]]])

torch.FloatTensor():返回没有初始化的FloatTensor。

1

2

3

4

5

#torch.FloatTensor(d1,d2,d3)

torch.FloatTensor(2,2)

  

#tensor([[-0.0000e+00,  4.5907e-41],

#        [-7.3327e-21,  6.8944e-43]])

torch.IntTensor():返回没有初始化的IntTensor。

1

2

3

4

5

#torch.IntTensor(d1,d2,d3)

torch.IntTensor(2,2)

  

#tensor([[          0,  1002524760],

#        [-1687359808,         492]], dtype=torch.int32)

1.2 随机初始化

  • 随机均匀分布:rand/rand_like,randint

rand:[0,1)均匀分布;randint(min,max,[d1,d2,d3]) 返回[min,max)的整数均匀分布

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

#torch.rand(d1,d2,d3)

torch.rand(2,2)

  

#tensor([[0.8670, 0.6158],

#        [0.0895, 0.2391]])

  

#rand_like()

a=torch.rand(3,2)

torch.rand_like(a)

  

#tensor([[0.2846, 0.3605],

#        [0.3359, 0.2789],

#        [0.5637, 0.6276]])

  

#randint(min,max,[d1,d2,d3])

torch.randint(1,10,[3,3,3])

  

#tensor([[[3, 3, 8],

#         [2, 7, 7],

#         [6, 5, 9]],

#

#        [[7, 9, 9],

#         [6, 3, 9],

#         [1, 5, 6]],

#

#        [[5, 4, 8],

#         [7, 1, 2],

#         [3, 4, 4]]])

  • 随机正态分布 randn

randn返回一组符合N(0,1)正态分布的随机数据

1

2

3

4

5

6

7

8

9

10

11

#randn(d1,d2,d3)

torch.randn(2,2)

  

#tensor([[ 0.3729,  0.0548],

#        [-1.9443,  1.2485]])

  

#normal(mean,std) 需要给出均值和方差

torch.normal(mean=torch.full([10],0.),std=torch.arange(1,0,-0.1))

  

#tensor([-0.8547,  0.1985,  0.1879,  0.7315, -0.3785, -0.3445,  0.7092,  0.0525, 0.2669,  0.0744])

#后面需要用reshape修正成自己想要的形状

1.3 赋值初始化

full:返回一个定值

1

2

3

4

5

6

7

8

9

10

11

#full([d1,d2,d3],num)

torch.full([2,2],6)

  

#tensor([[6, 6],

#        [6, 6]])

  

torch.full([],6)

#tensor(6)   标量

  

torch.full([1],6)

#tensor([6]) 向量

arange:返回一组阶梯,等差数列

1

2

3

4

5

6

7

#torch.arange(min,max,step):返回一个[min,max),步长为step的集体数组,默认为1

torch.arange(0,10)

  

#tensor([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

  

torch.arange(0,10,2)

#tensor([0, 2, 4, 6, 8])

linspace/logspace:返回一组阶梯

1

2

3

4

5

6

7

8

9

10

11

#torch.linspace(min,max,steps):返回一个[min,max],数量为steps的数组

torch.linspace(1,10,11)

  

#tensor([ 1.0000,  1.9000,  2.8000,  3.7000,  4.6000,  5.5000,  6.4000,  7.3000,

#         8.2000,  9.1000, 10.0000])

  

#torch.logspace(a,b,steps):返回一个[10^a,10^b],数量为steps的数组

torch.logspace(0,1,10)

  

#tensor([ 1.0000,  1.2915,  1.6681,  2.1544,  2.7826,  3.5938,  4.6416,  5.9948,

#         7.7426, 10.0000])

ones/zeros/eye:返回全1全0或者对角阵 ones_like/zeros_like

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

#torch.ones(d1,d2)

torch.ones(2,2)

  

#tensor([[1., 1.],

#        [1., 1.]])

  

#torch.zeros(d1,d2)

torch.zeros(2,2)

  

#tensor([[0., 0.],

#        [0., 0.]])

  

#torch.eye() 只能接收一个或两个参数

torch.eye(3)

  

#tensor([[1., 0., 0.],

#        [0., 1., 0.],

#        [0., 0., 1.]])

  

torch.eye(2,3)

  

#tensor([[1., 0., 0.],

#        [0., 1., 0.]])

1.4 随机打散变量

randperm:一般用于位置操作。类似random.shuffle()。

1

2

torch.randperm(8)

#tensor([2, 6, 7, 5, 3, 4, 1, 0])

二、索引与切片

简单索引方式

1

2

3

4

5

a=torch.rand(4,3,28,28)

a[0].shape

#torch.Size([3, 28, 28])

a[0,0,0,0]

#tensor(0.9373)

批量索引方式 开始位置:结束位置 左边取的到,右边取不到 算是一种切片 [0,1,2]->[-3,-2,-1]

1

2

3

4

a[:2].shape

#torch.Size([2, 3, 28, 28])

a[1:].shape

#torch.Size([3, 3, 28, 28])

隔行采样方式 开始位置:结束位置:间隔

1

2

a[:,:,0:28:2,:].shape

#torch.Size([4, 3, 14, 28])

任意取样方式 a.index_select(d,[d层的数据索引])

1

2

3

4

5

a.index_select(0,torch.tensor([0,2])).shape

#torch.Size([2, 3, 28, 28])

  

a.index_select(1,torch.tensor([0,2])).shape

#torch.Size([4, 2, 28, 28])

...任意维度取样

1

2

3

4

5

6

7

8

a[...].shape

#torch.Size([4, 3, 28, 28])

  

a[0,...].shape

#torch.Size([3, 28, 28])

  

a[:,2,...].shape

#torch.Size([4, 28, 28])

掩码索引mask x.ge(0.5) 表示大于等于0.5的为1,小于0.5的为0

1

2

3

4

5

6

#torch.masked_select 取出掩码对应位置的值

x=torch.randn(3,4)

mask=x.ge(0.5)

torch.masked_select(x,mask)

  

#tensor([1.6950, 1.2207, 0.6035])

具体索引 take(变量,位置) 会把变量变为一维的

1

2

3

4

x=torch.randn(3,4)

torch.take(x,torch.tensor([0,1,5]))

  

#tensor([-2.2092, -0.2652,  0.4848])


版权声明 : 本文内容来源于互联网或用户自行发布贡献,该文观点仅代表原作者本人。本站仅提供信息存储空间服务和不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权, 违法违规的内容, 请发送邮件至2530232025#qq.cn(#换@)举报,一经查实,本站将立刻删除。
原文链接 :
相关文章
  • python实现数组平移K位
    python数组平移K位 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 def move(ls: list, offset): 元素原索引+位移数
  • PyTorch定义Tensor及索引和切片介绍(最新推荐)
    深度学习--PyTorch定义Tensor 一、创建Tensor 1.1未初始化的方法 ?这些方法只是开辟了空间,所附的初始值(非常大,非常小,0),后面还需要我
  • Flask如何接收前端ajax传来的表单(包含文件)
    Flask接收前端ajax传来的表单 HTML,包含一个text类型文本框和file类型上传文件 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 3
  • 在Python中创建累积曲线图

    在Python中创建累积曲线图
    ogive图形以图形化方式表示一组数据的累积分布函数(CDF),有时也称为累积频率曲线。它用于检查数据分布并发现模式和趋势。Matplotlib、
  • python使用openai生成图像的教程

    python使用openai生成图像的教程
    OpenAI 是一个人工智能的工具包,包括神经网络、遗传算法和有限状态机等。使用python可以非常便捷的操作OpenAI的API。一下是OpenAI官网列举的
  • Python利用百度地图API实现步行导航功能的方法
    百度地图作为一款流行的地图应用程序,不仅提供了地图浏览功能,也提供了丰富的API供开发者使用。本文将通过Python编程,利用百度地图
  • python中list.copy的用法介绍
    当我们想复制两个一模一样的列表时,我们可能使用到list.copy()这个方法,这个方法可以让我们复制一个相同的数组,当遇到下面这种情况时
  • 彻底解决python NameError:name

    彻底解决python NameError:name '__file__' is not defined的方
    问题背景 我创建了一个函数,里面包含了一个获取当前执行文件路径的代码 1 current_path = os.path.dirname(os.path.abspath(__file__)) 我把这段代码放在
  • 使用python实现md5加密的方法
    1、简介 Message Digest Algorithm MD5(中文名为消息摘要算法第五版)为计算机安全领域广泛使用的一种散列函数,用于确保信息传输完整一致。
  • Python代码模拟CPU工作原理的介绍
    理解 CPU 工作原理,重要的是理解 pc 不停地自增地址,顺序执行程序指令。当遇到跳转指令时,会将 pc 重置为新地址。在顺序执行程序指令
  • 本站所有内容来源于互联网或用户自行发布,本站仅提供信息存储空间服务,不拥有版权,不承担法律责任。如有侵犯您的权益,请您联系站长处理!
  • Copyright © 2017-2022 F11.CN All Rights Reserved. F11站长开发者网 版权所有 | 苏ICP备2022031554号-1 | 51LA统计