当前位置:   article > 正文

AI基础-pytorch-1 张量tensor_pytorch中生成1的向量

pytorch中生成1的向量

张量的创建

张量创建的方式有许多种

直接创建

直接数组创建

import torch
import numpy

torch.tensor([[0.1,1.2],[2.2,3.1],[4.9,5.2]])
  • 1
  • 2
  • 3
  • 4

上面是直接创建,这样的方式我们最容易理解。直接给出原始数据。需要注意的是,参数必须是一个数组,多个数组的话需要合成一个数组。

numpy数组创建


a = numpy.array([1,2,3])
t = torch.from_numpy(a)
t
  • 1
  • 2
  • 3
  • 4

因为机器学习中numpy比较常用,但是它们想利用pytorch进行训练就需要用这种方式将其转化为tensorf形式。

创建全0的tensor


torch.zeros(2,3)

  • 1
  • 2
  • 3

创建特定形状的全0tensor


input = torch.empty(2,3)
torch.zeros_like(input)
  • 1
  • 2
  • 3

创建全1tensor


torch.ones(2,3)
  • 1
  • 2

创建特定形式的全1tensor


input = torch.empty(2,3)
torch.ones_like(input)
  • 1
  • 2
  • 3

按照形状填充特定值


torch.full((2,3),np.pi)



input = torch.empty(3,4)
torch.full_like(input,np.pi)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

按照规律创建

等差数列


torch.arange(start=0,end=10,step=0.5)

torch.linspace(start=0,end=10,steps=20)

  • 1
  • 2
  • 3
  • 4
  • 5

单位矩阵


torch.eye(5)


  • 1
  • 2
  • 3
  • 4

依据概率分布创建

正态分布



torch.normal(mean=0, std=1,size=(1,4))

torch.normal(mean=torch.arange(1.,11.),std=torch.arange(1.,0.,-0.1))

torch.randn(2,3)

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

以上都是创建正态分布的tensor变量的方法。其中,第一行用的均值和标准差都是标量,第二行都是张量;第三行是指定形状。

均匀分布


torch.rand(size=(2,3))
torch.randint(size=(2,3),low=10,high=20)
torch.randperm(5)

  • 1
  • 2
  • 3
  • 4
  • 5

张量的基本操作

拼接


x = torch.randn(size=(2,3))
torch.cat((x,x,x),dim=1)

x = torch.randn(size=(2,3))
torch.stack((x,x,x))

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

切分


x = torch.empty(2,6)
torch.chunk(input = x,dim=0,chunks=2)


x = torch.empty(size=(5,2))
print(f"x:{x}")

torch.split(tensor=x,split_size_or_sections=[2,3],dim=0)

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10



x = torch.empty(size=(5,2))
print(f"x:{x}")

torch.split(tensor=x,split_size_or_sections=[2,3],dim=0)


  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

张量的索引

给定tensor索引数据


x = torch.randn(size=(3, 4))
indices = torch.tensor([0, 2])
result = torch.index_select(input=x, index=indices, dim=0)


print(f"x:\n{x}")
print(f"="*40)
print(f"x's 0 and 2 row :\n{result}")

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

按照mask进行逻辑选择



x = torch.randn(size=(3,4))
mask = x.ge(0.5) #比较是否大于0.5
print(f"x:\n{x}")
print(f"mask:\n{mask}")

print(f"result:\n{torch.masked_select(input=x,mask=mask)}")

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

张量的变换

reshape


a = torch.arange(start=0,end=10,step=1)
torch.reshape(a,(2,5))

  • 1
  • 2
  • 3
  • 4

转置


x = torch.randn(size=(2,3))
result = torch.transpose(input=x,dim0=0,dim1=1)

print(f"x:\n{x}")
print("-"*50)
print(f"result:\n{result}")

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

x = torch.randn(size=(2,3))
result = torch.t(x)
print(f"x:\n{x}")
print(f"-"*40)
print(f"result:\n{result}")

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

压缩成一维


x = torch.randn(size=(2,3))
result = torch.squeeze(x)
print(f"x:\n{x}")
print(f"result:\n{result}")

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

依据dim扩展维度


x = torch.tensor([1,2,3,4,5])

result = torch.unsqueeze(x,1)
print(f"x:\n{x}")
print(f"result:\n{result}")

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/176243
推荐阅读
相关标签
  

闽ICP备14008679号