pytorch学习记录1-------tensor基本操作

最近对pytorch进行了初步学习,本博客用于整理巩固学习成果,在此分享,希望与众佬共同进步。

pytorch中对tensor的基本操作主要分为,生成tensor、初始化tensor、从np导入tensor以及索引tensor。

1.生成tensor

    tensor作为众多深度学习框架的基本数据类型,也是pytorch的基本数据结构。在pytorch中生成tensor可以直接使用torch.tensor结构,如下各例所示:

  •     a=torch.rand(2,3)  #生成维度为(2,3)的tensor,服从(0,1)均匀分布

   输出结果:

     a= tensor([[0.5614, 0.9591, 0.8236],
         [0.6383, 0.5176, 0.4473]]) 

  •     b=torch.randn(2,3)  #生成维度为(2,3)的tensor,服从(0,1)正态分布

输出结果:

  b= tensor([[-1.6925,  0.0550, -0.2395],
        [ 0.0332,  0.9193,  0.8795]]) 

  •     c=torch.FloatTensor(2,3)  #生成float类型的tensor,维度为(2,3)

 输出结果:

    c= tensor([[1.0148e-38, 7.9454e-43, 0.0000e+00],
        [0.0000e+00, 1.8367e-40, 0.0000e+00]], dtype=torch.float32) 

  •     d=torch.FloatTensor([2,3])  #生成float类型的tensor,tensor值为[2,3]

 输出结果:

 d= tensor([2., 3.], dtype=torch.float32)

2.初始化tensor

1.torch.set_default_tensor_type

  • 设置初始化数据类型 torch.set_default_tensor_type(torch.DoubleTensor)

2.torch.full

  • torch.full([],7) #生成标量7
  • torch.full([2,3],7) #生成维度为[2,3]的张量,数据全为7

输出结果:

tensor(1.)

tensor([[7., 7., 7.],
        [7., 7., 7.]])

3.torch.randperm

  • torch.randperm(4) #生成随机的0~3索引
  • random.shuffle([list]) #将list随机生成索引

输出结果:

tensor([2, 3, 1, 0])

[3, 2, 4, 1]

4.torch.arange和torch.linspace

  • torch.arange(0,10,2))  #[0,10) 不包含10 [start,end)

输出结果:

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

  • torch.linespace(0,10,4) #[0,10],分成4份,[start,end]

输出结果:

tensor([ 0.0000,  3.3333,  6.6667, 10.0000])

5.torch.ones 、torch.eye、torch.zeros

  • torch.ones(3,3) #生成全1,维度为[3,3]的张量

输出结果:

tensor([[1., 1., 1.],
        [1., 1., 1.],
        [1., 1., 1.]])

  • torch.zeros(3,4) #生成全0,维度为[3,4]的张量

输出结果:

tensor([[0., 0., 0., 0.],
        [0., 0., 0., 0.],
        [0., 0., 0., 0.]])

  • torch.eye(3,4) #生成对角矩阵,维度为[3,4]的张量

输出结果:

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

6.torch.ones_like

  • a=torch.rand(2,3)
  • torch.ones_like(a)  #生成一个与a维度相同的全1张量

输出结果:

tensor([[1., 1., 1.],
        [1., 1., 1.]])

3.从np导入tensor

  • a=np.array([3,4])
  • torch.from_numpy(a) #从numpy生成tensor

输出结果:

tensor([2, 3], dtype=torch.int32

4.索引tensor

  • s=torch.rand(3,3,25,25)  
  • s[:,1:3,:2,:]  # 1: 从1索引到最后;:3从开始索引到3,不包含3 ;1:3,索引1,2;:索引所有

输出结果:

torch.Size([3, 2, 2, 25])

  • s.torch.index_select(0,torch.tensor([0,2])) #第一个参数为维度,第二个为在该维度上的索引值

输出结果:

torch.Size([2,3,25,25])

  • s.take(torch.tensor([0,2,3])) #将数据打平后按索引进行取值

输出结果:

tensor([0.2804, 0.7501, 0.3356])

  • m=torch.rand(3,4)
  • mask=m.ge(0.5)
  • torch.mask.select(m,mask) #根据mask的指示将符合条件的值选出来

输出结果:tensor([0.8176, 0.9806, 0.9891, 0.5170, 0.8640, 0.7677, 0.5879])

你太大了,我不练了

发布了7 篇原创文章 · 获赞 3 · 访问量 2509

猜你喜欢

转载自blog.csdn.net/qq_35515203/article/details/102726683
今日推荐